<!DOCTYPE html>
<!-- saved from url=(0041)https://cryptojs.gitbook.io/docs/#hashing -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>CryptoJS - CryptoJS</title>
            <meta data-react-helmet="true" name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta data-react-helmet="true" name="google" value="notranslate"><meta data-react-helmet="true" property="og:image" content="https://app.gitbook.com/share/space/thumbnail/-LVOh1OI8lhWfR_994H2.png"><meta data-react-helmet="true" property="twitter:card" content="summary"><meta data-react-helmet="true" property="twitter:site" content="CryptoJS">
            <link data-react-helmet="true" rel="stylesheet" href="./CryptoJS - CryptoJS_files/css"><link data-react-helmet="true" rel="stylesheet" href="./CryptoJS - CryptoJS_files/emojione-sprite-40.min.css"><link data-react-helmet="true" rel="preconnect" href="https://www.googleapis.com/"><link data-react-helmet="true" rel="preconnect" href="https://api.amplitude.com/"><link data-react-helmet="true" rel="preconnect" href="https://gblobscdn.gitbook.com/"><link data-react-helmet="true" rel="icon" href="./CryptoJS - CryptoJS_files/spaces_-LVOh1OI8lhWfR_994H2_avatar.png"><link data-react-helmet="true" rel="canonical" href="https://cryptojs.gitbook.io/docs/">
            <style data-react-helmet="true" type="text/css">
        @font-face {
            font-family: "Roboto";
            src: local("Roboto"), local("Roboto-Regular"), url(https://gstatic.gitbook.com/fonts/fc3d4b35e4d07d4e0485cc2db0e57c77.woff) format('woff');
            font-weight: 400;
            font-display: fallback;
        }
        @font-face {
            font-family: "Roboto";
            src: local("Roboto Medium"), local("Roboto-Medium"), url(https://gstatic.gitbook.com/fonts/f4fa50c4003f87e7dc10459e500933c3.woff) format('woff');
            font-weight: 500;
            font-display: fallback;
        }
        @font-face {
            font-family: "Roboto";
            src: local("Roboto Bold"), local("Roboto-Bold"), url(https://gstatic.gitbook.com/fonts/72e37e5bf95a8dba938c78b1d7d91253.woff) format('woff');
            font-weight: 700;
            font-display: fallback;
        }
    </style><style data-react-helmet="true" type="text/css">
        @font-face {
            font-family: "Content-font";
            src: local("Roboto"), local("Roboto-Regular"), url(https://gstatic.gitbook.com/fonts/fc3d4b35e4d07d4e0485cc2db0e57c77.woff) format('woff');
            font-weight: 400;
            font-display: fallback;
        }
        @font-face {
            font-family: "Content-font";
            src: local("Roboto Medium"), local("Roboto-Medium"), url(https://gstatic.gitbook.com/fonts/f4fa50c4003f87e7dc10459e500933c3.woff) format('woff');
            font-weight: 500;
            font-display: fallback;
        }
        @font-face {
            font-family: "Content-font";
            src: local("Roboto Bold"), local("Roboto-Bold"), url(https://gstatic.gitbook.com/fonts/72e37e5bf95a8dba938c78b1d7d91253.woff) format('woff');
            font-weight: 700;
            font-display: fallback;
        }
    </style>
            <script async="" src="./CryptoJS - CryptoJS_files/analytics.js.下载"></script><script data-react-helmet="true" type="text/javascript" defer="true" src="./CryptoJS - CryptoJS_files/polyfill.min.js.下载"></script>
            <style>#__GITBOOK__ROOT__SERVER__ { width: 100%; height: 100%; display: flex;}</style>
            <style>#__GITBOOK__ROOT__CLIENT__ { width: 100%; min-height: 100%; height: initial; display: flex;}</style>
            
        <script src="./CryptoJS - CryptoJS_files/logger.min.js.下载" async=""></script><meta name="description" content="Original documentation: https://code.google.com/archive/p/crypto-js/" data-react-helmet="true"><meta property="og:title" content="CryptoJS" data-react-helmet="true"><meta property="og:description" content="Original documentation: https://code.google.com/archive/p/crypto-js/" data-react-helmet="true"><link rel="stylesheet" href="./CryptoJS - CryptoJS_files/6c3c9dec9383137845be0f0ea2cf1bf4.css" data-react-helmet="true"><style data-jss="" data-meta="aphrodite-to-jss">
html, body {
  color: #242A31;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-size: 15px;
  background: #F5F7F9;
  box-sizing: border-box;
  font-family: "Roboto", sans-serif;
  line-height: 1em;
  font-smoothing: antialiased;
  text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-text-size-adjust: 100%;
}
@media screen and (min-width: 768px) {
  html, body {
    text-rendering: optimizeLegibility;
  }
}
@media print {
  html, body {
    background: transparent;
  }
}
*, *:before, *:after {
  outline: none;
  box-sizing: inherit;
}
@font-face {
  font-family: "Flow-Rounded";
  src: url("https://gstatic.gitbook.com/fonts/bfc0a96537ceb0cad9e956b9f980fe88.woff") format('woff');
  font-display: block;
}
input, select, textarea {
  font-size: 16px;
}
input, select, textarea, button {
  font: inherit;
}
input[type="search"] {
  -webkit-appearance: none;
}
.draggingElement, .draggingElement *:hover {
  cursor: grabbing !important;
  pointer-events: auto !important;
}
.draggingElement .draggingHidden {
  display: none;
}
</style><style data-jss="" data-meta="aphrodite-to-jss">
.reset-3c756112--body-68cac36c {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #242A31;
  width: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  background: #F5F7F9;
  min-height: 100vh;
  flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--header-07037613--header-11420428 {
  display: -webkit-box;
  height: 80px;
  margin: 0;
  display: flex;
  padding: 0;
  z-index: 20;
  position: relative;
  box-shadow: 0 3px 8px 0 rgba(116, 129, 141, 0.1);
  border-bottom: 1px solid #d4dadf;
  background-color: #FFFFFF;
}
@media print {
  .reset-3c756112--header-07037613--header-11420428 {
    display: none;
  }
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--header-07037613--header-11420428 {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    top: 0;
    width: 100%;
    display: flex;
    position: fixed;
    padding-left: 16px;
    padding-right: 16px;
  }
}
@media screen and (max-width: 767px) {
  .reset-3c756112--header-07037613--header-11420428 {
    height: 60px;
    padding-left: 8px;
    padding-right: 8px;
  }
}
.reset-3c756112--headerContainer-bb8cc0bc {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 100%;
  margin: 0 auto;
  display: flex;
  padding: 0;
  max-width: 1448px;
}
.reset-3c756112--headerLeftColumn-4eae0bae--headerLeftColumn-7efc9f26 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  position: relative;
  align-items: center;
  justify-content: space-between;
  -webkit-box-pack: justify;
  -webkit-box-align: center;
}
@media screen and (min-width: 1024px) {
  .reset-3c756112--headerLeftColumn-4eae0bae--headerLeftColumn-7efc9f26 {
    max-width: 298px;
    justify-content: center;
    -webkit-box-pack: center;
  }
  .reset-3c756112--headerLeftColumn-4eae0bae--headerLeftColumn-7efc9f26:after {
    top: 50%;
    right: 0;
    height: 40px;
    content: " ";
    position: absolute;
    transform: translateY(-50%);
    border-left: 1px solid #E6ECF1;
  }
}
.reset-3c756112--mobileButton-7a76d05f {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 0 0 auto;
  width: 30px;
  cursor: pointer;
  height: 30px;
  margin: 0;
  display: flex;
  outline: none;
  padding: 0;
  font-size: 18px;
  align-items: center;
  justify-content: center;
  -webkit-box-pack: center;
  -webkit-box-align: center;
}
@media screen and (min-width: 1024px) {
  .reset-3c756112--mobileButton-7a76d05f {
    display: none;
  }
}
.icon-7f6730be--text-3f89f380--icon-1f8349b3 {
  color: #242A31;
  width: 1em;
  height: 1em;
  vertical-align: middle;
}
.reset-3c756112--headerLogo-5c0b38e2 {
  margin: 0;
  display: block;
  padding: 0px 24px;
}
@media screen and (min-width: 1024px) {
  .reset-3c756112--headerLogo-5c0b38e2 {
    width: 250px;
    padding: 0;
  }
}
.reset-3c756112--mobileLogo-dacfd15c {
  margin: 0;
  display: none;
  padding: 0;
}
@media screen and (max-width: 767px) {
  .reset-3c756112--mobileLogo-dacfd15c {
    display: block;
  }
}
.link-a079aa82--primary-53a25e66--logoLink-10d08504 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #3884FF;
  cursor: pointer;
  display: flex;
  align-items: center;
  text-decoration: none;
  -webkit-box-align: center;
}
.reset-3c756112--tooltipContainer-7fdb9b70--small-2ec8ae1a {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 30px;
  height: 30px;
  margin: 0;
  display: flex;
  padding: 0;
  border-radius: 3px;
}
.reset-3c756112--avatarFrame-2f40cdc9--small-2ec8ae1a {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  -webkit-mask-image: -moz-radial-gradient(white, black);
  mask-image: -webkit-radial-gradient(white, black);
  mask-image: -moz-radial-gradient(white, black);
  width: 30px;
  height: 30px;
  margin: 0;
  display: flex;
  padding: 0;
  overflow: hidden;
  position: relative;
  mask-image: radial-gradient(white, black);
  align-items: center;
  border-radius: 3px;
  justify-content: center;
  -webkit-box-pack: center;
  -webkit-box-align: center;
  -webkit-mask-image: radial-gradient(white, black);
}
.image-67b14f24--avatar-1c1d03ec {
  width: 100%;
  height: 100%;
  max-width: 100%;
  background-size: cover;
  background-color: #FFFFFF;
  background-repeat: no-repeat;
}
.reset-3c756112--S100Left-7c8af13a--logoDisplayNameContainer-583bfe61--logoText-02eb7190 {
  flex: 1;
  color: #242A31;
  margin: 0;
  display: block;
  padding: 0;
  padding-left: 8px;
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--S100Left-7c8af13a--logoDisplayNameContainer-583bfe61--logoText-02eb7190 {
    overflow: hidden;
    max-width: 50vw;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
}
.reset-3c756112--S100Left-7c8af13a--logoDisplayNameContainer-583bfe61--logoText-02eb7190:hover {
  color: #000000;
}
.text-4505230f--DisplayH700-a03ad9b4--textContentFamily-49a318e1--spaceNameText-677c2969 {
  font-size: 24px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 500;
  line-height: 1.5;
  overflow-wrap: break-word;
}
.reset-3c756112--desktopLogo-a594db90 {
  margin: 0;
  display: block;
  padding: 0;
}
@media screen and (max-width: 767px) {
  .reset-3c756112--desktopLogo-a594db90 {
    display: none;
  }
}
.reset-3c756112--tooltipContainer-7fdb9b70--medium-296350e4 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 40px;
  height: 40px;
  margin: 0;
  display: flex;
  padding: 0;
  border-radius: 3px;
}
.reset-3c756112--avatarFrame-2f40cdc9--medium-296350e4 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  -webkit-mask-image: -moz-radial-gradient(white, black);
  mask-image: -webkit-radial-gradient(white, black);
  mask-image: -moz-radial-gradient(white, black);
  width: 40px;
  height: 40px;
  margin: 0;
  display: flex;
  padding: 0;
  overflow: hidden;
  position: relative;
  mask-image: radial-gradient(white, black);
  align-items: center;
  border-radius: 3px;
  justify-content: center;
  -webkit-box-pack: center;
  -webkit-box-align: center;
  -webkit-mask-image: radial-gradient(white, black);
}
.reset-3c756112--headerInnerWrapper-629f79d1--headerInnerWrapper-4f99acea {
  flex: 1 1 auto;
  margin: 0px 88px;
  display: block;
  padding: 0;
  overflow: hidden;
  position: relative;
  max-width: 750px;
}
.reset-3c756112--headerInnerWrapper-629f79d1--headerInnerWrapper-4f99acea:after {
  background: -webkit-linear-gradient(to right, rgba(255,255,255,0) 0%, #FFFFFF 100%);
  background: -moz-linear-gradient(to right, rgba(255,255,255,0) 0%, #FFFFFF 100%);
  top: 0;
  right: 0;
  width: 32px;
  height: 100%;
  content: " ";
  position: absolute;
  background: linear-gradient(to right, rgba(255,255,255,0) 0%, #FFFFFF 100%);
  pointer-events: none;
}
@media screen and (max-width: 1439px) {
  .reset-3c756112--headerInnerWrapper-629f79d1--headerInnerWrapper-4f99acea {
    margin: 0px 24px 0px 88px;
  }
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--headerInnerWrapper-629f79d1--headerInnerWrapper-4f99acea {
    display: none;
  }
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48 {
  display: -webkit-box;
  overflow-x: auto;
  height: 100%;
  margin: 0;
  display: flex;
  opacity: 1;
  padding: 0;
  overflow-x: overlay;
  overflow-y: hidden;
  transition: flex 250ms ease,width 250ms ease,opacity 250ms ease;
  -moz-transition: flex 250ms ease,width 250ms ease,opacity 250ms ease;
  -webkit-transition: flex 250ms ease,width 250ms ease,opacity 250ms ease;
  -webkit-overflow-scrolling: touch;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-scrollbar {
  width: 4px;
  height: 4px;
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-scrollbar-track {
  background: none;
  border-width: 0;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
  transition: background 250ms ease;
  border-radius: 2px;
  -moz-transition: background 250ms ease;
  -webkit-transition: background 250ms ease;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-scrollbar-button {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-scrollbar-track-piece {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-scrollbar-corner {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48::-webkit-resizer {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48:hover::-webkit-scrollbar {
  display: initial;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48:hover::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
}
.reset-3c756112--searchInputWrapper-ea7f3052--searchInputWrapper-0442d130 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  height: 80px;
  margin: 0;
  display: flex;
  padding: 0;
  position: relative;
  max-width: 224px;
  align-items: center;
  -webkit-box-align: center;
}
.reset-3c756112--searchInputWrapper-ea7f3052--searchInputWrapper-0442d130:before {
  top: 50%;
  left: 0;
  height: 40px;
  content: " ";
  position: absolute;
  transform: translateY(-50%);
  border-left: 1px solid #E6ECF1;
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--searchInputWrapper-ea7f3052--searchInputWrapper-0442d130 {
    display: none;
  }
}
.reset-3c756112--inputContainer-b2cb171c {
  margin: 0;
  display: block;
  padding: 0;
  padding-left: 14px;
  padding-right: 16px;
}
.inputInner-5c86b87d--medium-0bbed4bd--inputInner-4216b016--searchInputPlaceholder-936306be {
  font: inherit;
  color: #242A31;
  width: 100%;
  border: none;
  cursor: inherit;
  height: 38px;
  margin: 0;
  resize: none;
  outline: none;
  padding: 0px 8px;
  background: transparent;
  box-sizing: border-box;
  text-align: left;
  line-height: inherit;
  border-radius: 3px;
}
.inputInner-5c86b87d--medium-0bbed4bd--inputInner-4216b016--searchInputPlaceholder-936306be::placeholder {
  color: #9DAAB6;
  font-size: 16px;
  font-weight: 500;
}
.reset-3c756112--inputWrapper-63396dac--TextH400-3033861f--medium-4505230f--light-502263b4--input-6d442051--searchInput-3fa812d5 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 100%;
  border: none;
  margin: 0;
  display: flex;
  outline: none;
  padding: 0;
  font-size: 16px;
  background: #FFFFFF;
  box-sizing: border-box;
  font-weight: 400;
  line-height: 1.625;
  border-radius: 3px;
  background-color: #FFFFFF;
}
.reset-3c756112--inputInnerSizer-756c9114 {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
}
.reset-3c756112--inputAddOn-45de9ec1--inputAddOnPrefix-202fa60d--icon-1f8349b3 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 0 0 auto;
  color: #242A31;
  order: -1;
  margin: 0;
  display: flex;
  padding: 0;
  align-items: center;
  line-height: 1.2;
  white-space: nowrap;
  padding-left: 8px;
  -webkit-box-align: center;
}
.icon-7f6730be--text-3f89f380 {
  width: 1em;
  height: 1em;
  vertical-align: middle;
}
.reset-3c756112--bodyContent-2f98451b {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 1;
  color: #3B454E;
  width: 100%;
  margin: 0 auto;
  display: flex;
  padding: 0;
}
.reset-3c756112--wholeContent-9fc567d4 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  position: relative;
  min-height: 100%;
  flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--wholeContentBody-554be184 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 1;
  margin: 0;
  display: flex;
  padding: 0;
  transition: margin-bottom 250ms ease;
  align-items: stretch;
  -moz-transition: margin-bottom 250ms ease;
  -webkit-box-align: stretch;
  -webkit-transition: margin-bottom 250ms ease;
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--wholeContentBody-554be184 {
    padding-top: 80px;
  }
}
@media screen and (max-width: 767px) {
  .reset-3c756112--wholeContentBody-554be184 {
    padding-top: 60px;
  }
}
@keyframes keyframes-animation-2f81d449-0-1-1 {
  0% {
    background-color: rgba(24, 48, 85, 0);
  }
  100% {
    background-color: rgba(24, 48, 85, 0.30000000000000004);
  }
}
.reset-3c756112--backdrop-1322b68a--hidden-247382c3--overlay-29559ab8 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0;
  display: flex;
  padding: 0;
  z-index: 29;
  position: absolute;
  transition: background-color 250ms ease-out;
  align-items: center;
  animation-name: none;
  pointer-events: none;
  -moz-transition: background-color 250ms ease-out;
  justify-content: center;
  -webkit-box-pack: center;
  background-color: rgba(24, 48, 85, 0);
  -webkit-box-align: center;
  -webkit-transition: background-color 250ms ease-out;
  animation-duration: 0.2s;
  animation-fill-mode: forwards;
  animation-timing-function: ease-out;
}
@media screen and (min-width: 1024px) {
  .reset-3c756112--backdrop-1322b68a--hidden-247382c3--overlay-29559ab8 {
    z-index: 14;
  }
}
.reset-3c756112--contentNavigation-dd3370a4 {
  margin: 0;
  display: block;
  padding: 0;
  z-index: 30;
}
@media print {
  .reset-3c756112--contentNavigation-dd3370a4 {
    display: none;
  }
}
@media screen and (min-width: 1024px) {
  .reset-3c756112--contentNavigation-dd3370a4 {
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    flex: 0 0 auto;
    width: calc((100% - 1448px) / 2 + 298px);
    display: flex;
    z-index: 15;
    min-width: 298px;
    background: #F5F7F9;
    align-items: stretch;
    border-right: 1px solid #E6ECF1;
    padding-left: calc((100% - 1448px) / 2);
    flex-direction: column;
    -webkit-box-align: stretch;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
  }
}
.reset-3c756112--contentNavigationInner-205d49ea--contentNavigationInnerCollapsed-7b4aca00 {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--contentNavigationInner-205d49ea--contentNavigationInnerCollapsed-7b4aca00 {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 30;
    position: fixed;
    max-width: 298px;
    transform: translateX(-100%) !important;
    box-shadow: none;
    overflow-y: auto;
    transition: transform 250ms ease;
    border-right: 1px solid #E6ECF1;
    -moz-transition: transform 250ms ease;
    background-color: #fff;
    -webkit-transition: transform 250ms ease;
  }
}
.reset-3c756112--sidebarWrapper-84a13d8e {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: auto;
  width: 100%;
  height: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  align-items: stretch;
  flex-direction: column;
  -webkit-box-align: stretch;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112 {
  margin: 0;
  display: block;
  padding: 0;
}
.reset-3c756112--sidebar-84a13d8e {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: auto;
  width: 100%;
  height: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  align-items: stretch;
  flex-direction: column;
  -webkit-box-align: stretch;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--sidebarMain-13701e8f {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  height: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  overflow-y: hidden;
  flex-direction: column;
  background-color: #F5F7F9;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe {
  overflow-y: auto;
  flex: 1 1 auto;
  width: 100%;
  margin: 0;
  display: block;
  padding: 0;
  overflow-x: hidden;
  overflow-y: overlay;
  -webkit-overflow-scrolling: touch;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-scrollbar {
  width: 4px;
  height: 4px;
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-scrollbar-track {
  background: none;
  border-width: 0;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
  transition: background 250ms ease;
  border-radius: 2px;
  -moz-transition: background 250ms ease;
  -webkit-transition: background 250ms ease;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-scrollbar-button {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-scrollbar-track-piece {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-scrollbar-corner {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe::-webkit-resizer {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe:hover::-webkit-scrollbar {
  display: initial;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe:hover::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
}
.reset-3c756112--mobileHeader-4e2d4892 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #74818D;
  height: 59px;
  margin: 0;
  display: flex;
  padding: 0;
  box-shadow: 0 1px 1px 0 rgba(116, 129, 141, 0.1);
  align-items: stretch;
  border-bottom: 1px solid #d4dadf;
  background-color: #FFFFFF;
  -webkit-box-align: stretch;
}
@media screen and (min-width: 768px) {
  .reset-3c756112--mobileHeader-4e2d4892 {
    display: none;
  }
}
.reset-3c756112--mobileHeaderClose-47b8fa64 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  cursor: pointer;
  margin: 0;
  display: flex;
  padding: 8px 16px;
  font-size: 24px;
  align-items: center;
  -webkit-box-align: center;
}
.reset-3c756112--pagesTree-4b07cd56 {
  margin: 0;
  display: block;
  padding: 0;
  font-size: 15px;
  margin-top: 32px;
  padding-left: 16px;
}
@media screen and (min-width: 768px) {
  .reset-3c756112--pagesTree-4b07cd56 {
    padding-left: 24px;
  }
}
.reset-3c756112--pageItem-01e3f344 {
  margin: 0;
  display: block;
  padding: 0;
  position: relative;
  border-left: 1px solid transparent;
}
.reset-3c756112--pageComponent-7cc5301a {
  margin: 0;
  display: block;
  padding: 0;
  margin-left: -1px;
}
.navButton-94f2579c--S300Bottom-9b4658d2--navButtonClickable-161b88ca--navButtonOpened-6a88552e {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: inherit;
  border: 1px solid transparent;
  cursor: pointer;
  display: flex;
  padding: 7px 24px 7px 16px;
  position: relative;
  align-items: center;
  border-color: #E6ECF1 !important;
  border-right: 0;
  margin-bottom: 24px;
  text-decoration: none;
  background-color: #FFFFFF;
  -webkit-box-align: center;
}
.navButton-94f2579c--S300Bottom-9b4658d2--navButtonClickable-161b88ca--navButtonOpened-6a88552e:hover {
  border-color: #E6ECF1;
  background-color: #FFFFFF;
}
.text-4505230f--UIH300-2063425d--textContentFamily-49a318e1--navButtonLabel-14a4968f {
  flex: 1;
  font-size: 14px;
  word-break: break-word;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 500;
  line-height: 1.5;
}
.reset-3c756112--footer-68e6f18c {
  margin: 0;
  display: block;
  padding: 0;
  position: relative;
}
.reset-3c756112--footer-68e6f18c:before {
  background: -webkit-linear-gradient(to bottom, rgba(255,255,255,0) 0%, #F5F7F9 100%);
  background: -moz-linear-gradient(to bottom, rgba(255,255,255,0) 0%, #F5F7F9 100%);
  top: -24px;
  width: 100%;
  height: 24px;
  content: "";
  display: block;
  position: absolute;
  background: linear-gradient(to bottom, rgba(255,255,255,0) 0%, #F5F7F9 100%);
}
.reset-3c756112--trademark-a8da4b94 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #9DAAB6;
  margin: 16px;
  display: flex;
  padding: 0;
  align-items: center;
  margin-left: 32px;
  padding-top: 8px;
  padding-left: 16px;
  border-radius: 3px;
  padding-right: 16px;
  padding-bottom: 8px;
  text-decoration: none;
  background-color: #E6ECF1;
  -webkit-box-align: center;
}
.reset-3c756112--trademark-a8da4b94:hover {
  color: #3884FF;
}
.reset-3c756112--trademarkLogo-0d2d53bc {
  margin: 0;
  display: block;
  padding: 0;
  font-size: 40px;
}
.reset-3c756112--trademarkContent-04a01aea {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
  padding-left: 16px;
}
.text-4505230f--TextH200-a3425406--textUIFamily-5ebd8e40 {
  font-size: 12px;
  font-family: "Roboto", sans-serif;
  font-weight: 400;
  line-height: 1.625;
}
.reset-3c756112--wholeContentPage-6c3f1fc5 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 1 1 auto;
  margin: 0;
  display: flex;
  padding: 0;
  max-width: 100%;
  min-width: 0;
  background: #fff;
  flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--wholePageSticky-f53dafd2 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 1 1 auto;
  margin: 0;
  display: flex;
  padding: 0;
  position: relative;
  min-width: 0;
}
.reset-3c756112--pageContainer-3ec6d8d0 {
  flex: 1 1 auto;
  margin: 0px 16px;
  display: block;
  padding: 0;
  max-width: 750px;
  min-width: 0;
  padding-bottom: 64px;
}
@media screen and (max-width: 1023px) {
  .reset-3c756112--pageContainer-3ec6d8d0 {
    margin: 0px auto;
    padding: 0px 24px;
  }
}
@media screen and (min-width: 1024px) {
  .reset-3c756112--pageContainer-3ec6d8d0 {
    margin: 0px 88px;
  }
}
.reset-3c756112--pageHeader-15724735 {
  margin: 0;
  display: block;
  padding: 0;
  border-bottom: 2px solid #E6ECF1;
  margin-bottom: 32px;
}
.reset-3c756112--pageHeaderInner-7c0f0284 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: auto;
  margin: 0;
  display: flex;
  padding: 40px 0px;
}
@media screen and (min-width: 768px) {
  .reset-3c756112--pageHeaderInner-7c0f0284 {
    flex-wrap: wrap;
    align-items: baseline;
    flex-direction: row;
    -webkit-box-align: baseline;
    -webkit-box-lines: multiple;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
  }
}
.reset-3c756112--pageHeaderWrapperContent-6897c946 {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
  position: relative;
}
.reset-3c756112--horizontalFlex-5a0077e0 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  margin: 0;
  display: flex;
  padding: 0;
  align-items: stretch;
  justify-content: space-between;
  -webkit-box-pack: justify;
  -webkit-box-align: stretch;
}
.reset-3c756112--pageHeaderIntro-0c1463da {
  flex: 1 1 auto;
  margin: 0;
  display: block;
  padding: 0;
  padding-right: 16px;
}
.reset-3c756112--pageTitle-33dc39a3 {
  color: #242A31;
  width: 100%;
  border: none;
  margin: 0;
  display: block;
  outline: none;
  padding: 0;
  background: none;
  border-radius: 3px;
}
.text-4505230f--DisplayH900-bfb998fa--textContentFamily-49a318e1 {
  font-size: 32px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 500;
  line-height: 1.5;
}
.reset-3c756112--toolbar-a6a9f7d2--medium-8e46b02c--pageHeaderToolbar-6457a802--withControlsClosed-3e96e46c {
  display: -ms-inline-grid;
  margin: 0;
  display: none;
  padding: 0;
  margin-top: 9px;
  -ms-grid-rows: none;
  grid-column-gap: 16px;
  grid-template-rows: none;
}
@media screen and (max-width: 1279px) {
  .reset-3c756112--toolbar-a6a9f7d2--medium-8e46b02c--pageHeaderToolbar-6457a802--withControlsClosed-3e96e46c {
    display: block;
  }
}
.button-36063075--small-30ceeddb--button-4fcaac20--small-54db2a94 {
  display: -webkit-inline-box;
  display: -moz-inline-box;
  display: -ms-inline-flexbox;
  display: -webkit-inline-flex;
  color: #9DAAB6;
  width: 30px;
  border: 1px solid;
  cursor: pointer;
  height: 30px;
  display: inline-flex;
  outline: none;
  padding: 0;
  transition: all 250ms ease-out;
  align-items: center;
  line-height: 1em;
  white-space: nowrap;
  border-color: transparent;
  border-radius: 3px;
  -moz-transition: all 250ms ease-out;
  justify-content: center;
  text-decoration: none;
  -webkit-box-pack: center;
  background-color: transparent;
  -webkit-box-align: center;
  -webkit-transition: all 250ms ease-out;
}
.button-36063075--small-30ceeddb--button-4fcaac20--small-54db2a94:disabled {
  opacity: 0.5;
  pointer-events: none;
}
.button-36063075--small-30ceeddb--button-4fcaac20--small-54db2a94:hover {
  color: #000000;
}
.small-3bde6db7--iconOnly-bddce91a {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  margin: 0;
  display: flex;
  font-size: 18px;
  align-items: center;
  justify-content: center;
  -webkit-box-pack: center;
  -webkit-box-align: center;
}
.text-4505230f--UIH300-2063425d--textUIFamily-5ebd8e40--text-8ee2c8b2 {
  font-size: 14px;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  line-height: 1em;
}
.reset-3c756112--pageHeaderDescription-22970244 {
  flex: auto;
  margin: 0;
  display: block;
  padding: 0;
}
.reset-3c756112--pageDescription-8425f32c {
  color: #74818D;
  width: 100%;
  border: none;
  margin: 8px 0px 0px 0px;
  resize: none;
  display: block;
  outline: none;
  padding: 0;
  background: none;
  min-height: 19px;
  overflow-x: hidden;
  border-radius: 3px;
  letter-spacing: 0.0em;
}
.text-4505230f--TextH400-3033861f--textContentFamily-49a318e1 {
  font-size: 16px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 400;
  line-height: 1.625;
}
.reset-3c756112--toaster-c029690e {
  top: 16px;
  left: 50%;
  margin: 0;
  display: block;
  padding: 0;
  z-index: 160;
  position: fixed;
  transform: translateX(-50%);
}
.reset-3c756112--pageBody-a91db4ac {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  margin: 0;
  display: flex;
  padding: 0;
  position: relative;
  font-size: 16px;
  flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--container-960c7c26 {
  margin: 0;
  display: block;
  padding: 0;
  position: relative;
  margin-bottom: -24px;
}
.blockHeading-442b4f12 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #242A31;
  margin: 0;
  display: flex;
  position: relative;
  margin-bottom: 24px;
}
.blockHeadingContent-756c9114 {
  flex: 1;
}
.text-4505230f--HeadingH700-04e1a2a3--textContentFamily-49a318e1 {
  font-size: 24px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 700;
  line-height: 1.5;
}
.blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda {
  color: #242A31;
  width: 20px;
  opacity: 0;
  transition: opacity 150ms ease;
  line-height: 1em;
  padding-left: 4px;
  -moz-transition: opacity 150ms ease;
  -webkit-transition: opacity 150ms ease;
}
.blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda:hover {
  color: #3884FF;
}
@media print {
  .blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda {
    display: none;
  }
}
.blockHeadingAnchorIcon-1c2bf3cb {
  font-size: 16px;
  vertical-align: middle;
}
.reset-3c756112--blockHeadingUp-c32402b2 {
  width: 1em;
  cursor: pointer;
  height: 1em;
  margin: 0;
  display: block;
  outline: none;
  padding: 0;
  line-height: 1em;
}
@media screen and (min-width: 768px) {
  .reset-3c756112--blockHeadingUp-c32402b2 {
    display: none;
  }
}
@media print {
  .reset-3c756112--blockHeadingUp-c32402b2 {
    display: none;
  }
}
.blockParagraph-544a408c {
  color: inherit;
  margin: 0;
  position: relative;
  margin-bottom: 24px;
}
.link-a079aa82--primary-53a25e66--link-faf6c434 {
  color: #3884FF;
  cursor: pointer;
  text-decoration: none;
}
.link-a079aa82--primary-53a25e66--link-faf6c434:hover {
  text-decoration: underline;
}
.blockHeading-442b4f12--blockHeading2WithMargin-532d771d {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #242A31;
  margin: 0;
  display: flex;
  position: relative;
  margin-top: 32px;
  margin-bottom: 24px;
}
.text-4505230f--HeadingH600-23f228db--textContentFamily-49a318e1 {
  font-size: 20px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 700;
  line-height: 1.5;
}
.blockHeading-442b4f12--blockHeading3WithMargin-532d7700 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #242A31;
  margin: 0;
  display: flex;
  position: relative;
  margin-top: 24px;
  margin-bottom: 24px;
}
.text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1 {
  font-size: 16px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 700;
  line-height: 1.5;
}
.bold-3c254bd9 {
  font-weight: 700;
}
.reset-3c756112--codeBlockWrapper-56f27afc {
  margin: 0;
  display: block;
  padding: 0;
  position: relative;
}
.reset-3c756112--copyButtonWrapper-ca591f6e {
  top: 16px;
  right: 16px;
  margin: 0;
  display: block;
  padding: 0;
  z-index: 1;
  position: absolute;
}
@keyframes keyframes-animation-bd7e9c6a-0-1-2 {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe {
  color: #9DAAB6;
  cursor: pointer;
  margin: 0;
  display: block;
  opacity: 0.5;
  outline: none;
  padding: 8px;
  position: relative;
  font-size: 16px;
  line-height: 1em;
}
.reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe:hover {
  opacity: 1;
}
@media print {
  .reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe {
    display: none;
  }
}
.reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe:after {
  width: -webkit-max-content;
  width: -moz-max-content;
  top: calc(100% + 16px);
  left: 50%;
  color: #FFFFFF;
  width: max-content;
  bottom: auto;
  content: attr(aria-label);
  display: none;
  opacity: 0;
  padding: 5px 8px;
  z-index: 155;
  position: absolute;
  font-size: 12px;
  max-width: 300px;
  transform: translateX(-50%);
  background: #242A31;
  font-weight: 400;
  line-height: 1.625;
  white-space: normal;
  border-radius: 3px;
  animation-name: keyframes-animation-bd7e9c6a-0-1-2;
  pointer-events: none;
  text-transform: none;
  animation-duration: 0.2s;
  animation-fill-mode: forwards;
}
.reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe:before {
  top: calc(100% + 8px);
  left: 50%;
  width: 0;
  bottom: auto;
  height: 0;
  content: "";
  display: none;
  opacity: 0;
  z-index: 156;
  position: absolute;
  transform: translateX(-50%);
  border-color: #242A31 transparent;
  border-style: solid;
  animation-name: keyframes-animation-bd7e9c6a-0-1-2;
  border-top-width: 0;
  border-left-width: 8px;
  animation-duration: 0.2s;
  border-right-width: 8px;
  animation-fill-mode: forwards;
  border-bottom-width: 8px;
}
.reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe:hover:before {
  display: block;
}
.reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe:hover:after {
  display: block;
}
.reset-3c756112--codeBlock-75b39b81 {
  color: #E6ECF1;
  margin: 32px 0px;
  display: block;
  hyphens: none;
  padding: 24px 24px 24px 8px;
  overflow: auto;
  tab-size: 2;
  direction: ltr;
  font-size: 14px;
  background: #183055;
  text-align: left;
  word-break: normal;
  -ms-hyphens: none;
  font-family: "Source Code Pro", Consolas, Menlo, Monaco, Courier, monospace;
  line-height: 1.4;
  white-space: pre;
  word-spacing: normal;
  -moz-tab-size: 2;
  border-radius: 3px;
  -webkit-hyphens: none;
}
.reset-3c756112--codeBlock-75b39b81::selection {
  background: #D3DCE4;
  text-shadow: none;
}
.codeLine-a3169fbc {
  font: inherit;
  padding: 0px 0px;
  position: relative;
  word-wrap: normal;
  white-space: pre;
  padding-left: 44px;
  padding-right: 14px;
  counter-increment: line;
}
.codeLine-a3169fbc:not(:only-child):before {
  top: 2px;
  left: 4px;
  color: #5C6975;
  width: 24px;
  bottom: 0;
  content: counter(line);
  display: inline-block;
  overflow: hidden;
  position: absolute;
  font-size: 12px;
  text-align: right;
  user-select: none;
  white-space: nowrap;
  text-overflow: ellipsis;
  -ms-user-select: none;
  -moz-user-select: none;
  background-color: transparent;
  -webkit-user-select: none;
}
.codeLine-a3169fbc:only-child {
  padding-left: 30px;
}
.list-20526648 {
  color: #3B454E;
  margin: 0;
  padding: 0;
  padding-left: 2em;
  margin-bottom: 24px;
}
.reset-3c756112--listItemContent-756c9114 {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
}
.blockParagraph-544a408c--noMargin-acdf7afa {
  color: inherit;
  margin: 0;
  position: relative;
  margin-bottom: 0;
}
.reset-3c756112--pageFooter-f1d5e2b0 {
  margin: 0;
  display: block;
  padding: 0;
  margin-top: 64px;
}
@media print {
  .reset-3c756112--pageFooter-f1d5e2b0 {
    display: none;
  }
}
.reset-3c756112--navPagesLinks-67bea901--navPagesUnique-5b69cc14 {
  display: -ms-grid;
  width: auto;
  margin: 0;
  display: grid;
  padding: 0;
  -ms-grid-rows: auto;
  grid-column-gap: 24px;
  -ms-grid-columns: 1fr;
  grid-template-rows: auto;
  grid-template-areas: "next" "previous";
  grid-template-columns: 1fr;
}
@media screen and (max-width: 767px) {
  .reset-3c756112--navPagesLinks-67bea901--navPagesUnique-5b69cc14 {
    grid-row-gap: 24px;
    -ms-grid-columns: 1fr;
    grid-template-areas: "next" "previous";
    grid-template-columns: 1fr;
  }
}
.reset-3c756112--pageFooterColumns-ef8f347e {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  margin: 0;
  display: flex;
  padding: 0;
  border-top: 2px solid #E6ECF1;
  margin-top: 24px;
  align-items: center;
  padding-top: 24px;
  flex-direction: row;
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
}
@media screen and (max-width: 767px) {
  .reset-3c756112--pageFooterColumns-ef8f347e {
    align-items: stretch;
    flex-direction: column;
    -webkit-box-align: stretch;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
  }
}
.reset-3c756112--pageFooterSummary-12074aff {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
}
@media screen and (max-width: 767px) {
  .reset-3c756112--pageFooterSummary-12074aff {
    margin-bottom: 16px;
  }
}
.reset-3c756112--pageChangesSummary-08821678 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: auto;
  margin: 0;
  display: flex;
  padding: 0;
  align-items: center;
  -webkit-box-align: center;
}
.reset-3c756112--pageContributors-5c59582e {
  flex: 0 0 auto;
  margin: 0;
  display: block;
  padding: 0;
  margin-right: 8px;
}
.reset-3c756112--ownerAvatarList-696792ce {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  margin: 0;
  display: flex;
  padding: 0;
  flex-direction: row-reverse;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
}
@keyframes keyframes-animation-bd7e9c6a-0-1-3 {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  width: 30px;
  height: 30px;
  margin: 0;
  display: flex;
  padding: 0;
  z-index: 0;
  position: relative;
  box-shadow: 0 0 0 2px white;
  border-radius: 128px;
}
.reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802:after {
  width: -webkit-max-content;
  width: -moz-max-content;
  top: calc(100% + 16px);
  left: 50%;
  color: #FFFFFF;
  width: max-content;
  bottom: auto;
  content: attr(aria-label);
  display: none;
  opacity: 0;
  padding: 5px 8px;
  z-index: 155;
  position: absolute;
  font-size: 12px;
  max-width: 300px;
  transform: translateX(-50%);
  background: #242A31;
  font-weight: 400;
  line-height: 1.625;
  white-space: normal;
  border-radius: 3px;
  animation-name: keyframes-animation-bd7e9c6a-0-1-3;
  pointer-events: none;
  text-transform: none;
  animation-duration: 0.2s;
  animation-fill-mode: forwards;
}
.reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802:before {
  top: calc(100% + 8px);
  left: 50%;
  width: 0;
  bottom: auto;
  height: 0;
  content: "";
  display: none;
  opacity: 0;
  z-index: 156;
  position: absolute;
  transform: translateX(-50%);
  border-color: #242A31 transparent;
  border-style: solid;
  animation-name: keyframes-animation-bd7e9c6a-0-1-3;
  border-top-width: 0;
  border-left-width: 8px;
  animation-duration: 0.2s;
  border-right-width: 8px;
  animation-fill-mode: forwards;
  border-bottom-width: 8px;
}
.reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802:nth-last-child(n+2) {
  margin-left: -8px;
}
.reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802:hover:before {
  display: block;
}
.reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802:hover:after {
  display: block;
}
.reset-3c756112--avatarFrame-2f40cdc9--small-2ec8ae1a--circle-6c5acd10 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  -webkit-mask-image: -moz-radial-gradient(white, black);
  mask-image: -webkit-radial-gradient(white, black);
  mask-image: -moz-radial-gradient(white, black);
  width: 30px;
  height: 30px;
  margin: 0;
  display: flex;
  padding: 0;
  overflow: hidden;
  position: relative;
  mask-image: radial-gradient(white, black);
  align-items: center;
  border-radius: 128px;
  justify-content: center;
  -webkit-box-pack: center;
  -webkit-box-align: center;
  -webkit-mask-image: radial-gradient(white, black);
}
.reset-3c756112--innerShadow-7a3a8651 {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0;
  display: block;
  padding: 0;
  position: absolute;
  box-shadow: inset 0 0 1px 1px rgba(24, 48, 85, 0.1);
  border-radius: 128px;
  pointer-events: none;
}
.reset-3c756112--pageEditedDate-b805c39a {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: auto;
  color: #9DAAB6;
  margin: 0;
  display: flex;
  padding: 0;
}
.text-4505230f--TextH200-a3425406--textContentFamily-49a318e1 {
  font-size: 12px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 400;
  line-height: 1.625;
}
.reset-3c756112--pageSide-ad9fed26 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  flex: 0 0 auto;
  width: 224px;
  margin: 0;
  display: flex;
  padding: 0;
  position: relative;
  margin-right: auto;
}
@media print {
  .reset-3c756112--pageSide-ad9fed26 {
    display: none;
  }
}
@media screen and (max-width: 1279px) {
  .reset-3c756112--pageSide-ad9fed26 {
    display: none;
  }
}
.reset-3c756112--stickyContainer-2bed3a82 {
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
  max-width: 100%;
}
.reset-3c756112--tocWrapper-506ea24c {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  height: 100%;
  margin: 0;
  display: flex;
  padding: 0;
  padding-top: 40px;
  flex-direction: column;
  padding-bottom: 40px;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114 {
  overflow-y: auto;
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
  overflow-x: hidden;
  overflow-y: overlay;
  -webkit-overflow-scrolling: touch;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-scrollbar {
  width: 4px;
  height: 4px;
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-scrollbar-track {
  background: none;
  border-width: 0;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
  transition: background 250ms ease;
  border-radius: 2px;
  -moz-transition: background 250ms ease;
  -webkit-transition: background 250ms ease;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-scrollbar-button {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-scrollbar-track-piece {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-scrollbar-corner {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114::-webkit-resizer {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114:hover::-webkit-scrollbar {
  display: initial;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114:hover::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
}
.reset-3c756112--pageSideSection-542f1fd5 {
  margin: 0;
  display: block;
  padding: 0;
  position: relative;
}
.reset-3c756112--pageSideSection-542f1fd5:before {
  top: 0;
  left: 0;
  height: 100%;
  content: " ";
  position: absolute;
  border-left: 1px solid #E6ECF1;
}
.reset-3c756112--menu-5b8a7448--pageToc-16c35922--pageTocLive-542f1fd5 {
  display: -webkit-box;
  flex: 1;
  margin: 0;
  display: flex;
  padding: 0;
  overflow: hidden;
  position: relative;
  min-width: 224px;
  counter-reset: toc;
  flex-direction: column;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
}
@media print {
  .reset-3c756112--menu-5b8a7448--pageToc-16c35922--pageTocLive-542f1fd5 {
    display: none;
  }
}
.reset-3c756112--menu-5b8a7448--pageToc-16c35922--pageTocLive-542f1fd5:before {
  top: 0;
  left: 0;
  height: 100%;
  content: " ";
  position: absolute;
  border-left: 1px solid #E6ECF1;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496 {
  overflow-y: auto;
  flex: 1;
  margin: 0;
  display: block;
  padding: 0;
  overflow-x: hidden;
  overflow-y: overlay;
  -webkit-overflow-scrolling: touch;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-scrollbar {
  width: 4px;
  height: 4px;
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-scrollbar-track {
  background: none;
  border-width: 0;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
  transition: background 250ms ease;
  border-radius: 2px;
  -moz-transition: background 250ms ease;
  -webkit-transition: background 250ms ease;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-scrollbar-button {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-scrollbar-track-piece {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-scrollbar-corner {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496::-webkit-resizer {
  display: none;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496:hover::-webkit-scrollbar {
  display: initial;
}
.reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496:hover::-webkit-scrollbar-thumb {
  background: rgba(0,0,0,.16);
}
.reset-3c756112--menuHeader-342906de--menuHeaderLight-2c5d8183 {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  color: #9DAAB6;
  margin: 0;
  display: flex;
  padding: 0;
  padding-left: 24px;
  margin-bottom: 8px;
}
.reset-3c756112--menuHeaderIcon-0c3ed569 {
  margin: 0;
  display: block;
  padding: 0;
  margin-right: 8px;
}
.text-4505230f--InfoH100-1e92e1d1--textContentFamily-49a318e1 {
  font-size: 10px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 1.2px;
  text-transform: uppercase;
}
.reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024 {
  display: -webkit-box;
  color: #74818D;
  cursor: pointer;
  margin: 0;
  display: flex;
  padding: 4px 16px;
  align-items: center;
  padding-left: 24px;
  vertical-align: middle;
  text-decoration: none;
  -webkit-box-align: center;
}
.reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024:hover {
  background: none;
  text-decoration: inherit;
}
.link-a079aa82--primary-53a25e66 {
  color: #3884FF;
  cursor: pointer;
  text-decoration: underline;
}
.reset-3c756112--menuItemContent-c44ec79e {
  margin: 0;
  display: block;
  padding: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.text-4505230f--UIH300-2063425d--textContentFamily-49a318e1 {
  font-size: 14px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 500;
  line-height: 1.5;
}
.text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1 {
  font-size: 12px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 500;
  line-height: 1.5;
}
.text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1--pageTocLinkH2-2294976c {
  font-size: 12px;
  font-family: Content-font, Roboto, sans-serif;
  font-weight: 500;
  line-height: 1.5;
  padding-left: 16px;
}
.reset-3c756112--pendingTransitionBar-4d0ba35e--none-905a1220 {
  top: 0;
  left: 0;
  width: 0;
  height: 2px;
  margin: 0;
  display: none;
  padding: 0;
  z-index: 1000;
  position: fixed;
  background: #1F65D6;
  animation-fill-mode: both;
}
</style><script charset="utf-8" src="./CryptoJS - CryptoJS_files/chunk.966.9bcdd26c.js.下载"></script></head>
        <body>
            
            <div id="__GITBOOK__ROOT__CLIENT__" style="display: flex;"><div class="reset-3c756112--body-68cac36c"><div class="reset-3c756112--header-07037613--header-11420428"><div class="reset-3c756112--headerContainer-bb8cc0bc"><div class="reset-3c756112--headerLeftColumn-4eae0bae--headerLeftColumn-7efc9f26"><div role="button" tabindex="-1" class="reset-3c756112--mobileButton-7a76d05f"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380--icon-1f8349b3"><g><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></g></svg></div><div class="reset-3c756112--headerLogo-5c0b38e2"><div class="reset-3c756112--mobileLogo-dacfd15c"><a class="link-a079aa82--primary-53a25e66--logoLink-10d08504" href="https://cryptojs.gitbook.io/docs/" style="color: rgb(0, 0, 0);"><div class="reset-3c756112--tooltipContainer-7fdb9b70--small-2ec8ae1a"><div class="reset-3c756112--avatarFrame-2f40cdc9--small-2ec8ae1a"><img class="image-67b14f24--avatar-1c1d03ec" src="./CryptoJS - CryptoJS_files/spaces_-LVOh1OI8lhWfR_994H2_avatar.png"></div></div><div class="reset-3c756112--S100Left-7c8af13a--logoDisplayNameContainer-583bfe61--logoText-02eb7190"><span class="text-4505230f--DisplayH700-a03ad9b4--textContentFamily-49a318e1--spaceNameText-677c2969">CryptoJS</span></div></a></div><div class="reset-3c756112--desktopLogo-a594db90"><a class="link-a079aa82--primary-53a25e66--logoLink-10d08504" href="https://cryptojs.gitbook.io/docs/" style="color: rgb(0, 0, 0);"><div class="reset-3c756112--tooltipContainer-7fdb9b70--medium-296350e4"><div class="reset-3c756112--avatarFrame-2f40cdc9--medium-296350e4"><img class="image-67b14f24--avatar-1c1d03ec" src="./CryptoJS - CryptoJS_files/spaces_-LVOh1OI8lhWfR_994H2_avatar.png"></div></div><div class="reset-3c756112--S100Left-7c8af13a--logoDisplayNameContainer-583bfe61--logoText-02eb7190"><span class="text-4505230f--DisplayH700-a03ad9b4--textContentFamily-49a318e1--spaceNameText-677c2969">CryptoJS</span></div></a></div></div><div role="button" tabindex="-1" class="reset-3c756112--mobileButton-7a76d05f"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380--icon-1f8349b3"><g><circle cx="10.5" cy="10.5" r="7.5"></circle><line x1="21" y1="21" x2="15.8" y2="15.8"></line></g></svg></div></div><div class="reset-3c756112--headerInnerWrapper-629f79d1--headerInnerWrapper-4f99acea"><div class="reset-3c756112--withScrollbar-39338630--scrollAxisX-bf86cd6c--headerInner-c872fc48"></div></div><div class="reset-3c756112--searchInputWrapper-ea7f3052--searchInputWrapper-0442d130"><div class="reset-3c756112--inputContainer-b2cb171c"><div aria-label="" class="reset-3c756112--inputWrapper-63396dac--TextH400-3033861f--medium-4505230f--light-502263b4--input-6d442051--searchInput-3fa812d5"><div class="reset-3c756112--inputInnerSizer-756c9114"><input placeholder="Search..." type="text" class="inputInner-5c86b87d--medium-0bbed4bd--inputInner-4216b016--searchInputPlaceholder-936306be"></div><div class="reset-3c756112--inputAddOn-45de9ec1--inputAddOnPrefix-202fa60d--icon-1f8349b3"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><circle cx="10.5" cy="10.5" r="7.5"></circle><line x1="21" y1="21" x2="15.8" y2="15.8"></line></g></svg></div></div></div></div></div></div><div class="reset-3c756112--bodyContent-2f98451b"><div class="reset-3c756112--wholeContent-9fc567d4"><div class="reset-3c756112--wholeContentBody-554be184"><div role="presentation" class="reset-3c756112--backdrop-1322b68a--hidden-247382c3--overlay-29559ab8"></div><div class="reset-3c756112--contentNavigation-dd3370a4"><div class="reset-3c756112--contentNavigationInner-205d49ea--contentNavigationInnerCollapsed-7b4aca00"><div class="reset-3c756112--sidebarWrapper-84a13d8e"><div class="reset-3c756112" style="padding-bottom: 0px;"></div><div class="reset-3c756112--sidebar-84a13d8e" style="position: relative; max-height: 495px;"><div class="reset-3c756112--sidebarMain-13701e8f"><div class="reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sidebarInner-18a1e7fe"><div class="reset-3c756112--mobileHeader-4e2d4892"><div role="button" tabindex="-1" class="reset-3c756112--mobileHeaderClose-47b8fa64"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></g></svg></div></div><div class="reset-3c756112--pagesTree-4b07cd56"><div class="reset-3c756112--pageItem-01e3f344"><div class="reset-3c756112--pageComponent-7cc5301a"><a class="navButton-94f2579c--S300Bottom-9b4658d2--navButtonClickable-161b88ca--navButtonOpened-6a88552e" href="https://cryptojs.gitbook.io/docs/" style="color: rgb(0, 0, 0);"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1--navButtonLabel-14a4968f">CryptoJS</span></a></div></div></div></div><div class="reset-3c756112--footer-68e6f18c"><a href="https://www.gitbook.com/?utm_source=content&amp;utm_medium=trademark&amp;utm_campaign=cryptojs" target="_blank" class="reset-3c756112--trademark-a8da4b94" role="presentation"><div class="reset-3c756112--trademarkLogo-0d2d53bc"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="currentColor" viewBox="0 0 1067 769" xmlns="http://www.w3.org/2000/svg" stroke="none" class="icon-7f6730be--text-3f89f380"><g><path d="M480.026 640.677c17.205 0 31.2 13.997 31.2 31.194s-13.995 31.193-31.2 31.193c-17.197 0-31.193-13.996-31.193-31.193 0-17.197 13.996-31.194 31.193-31.194m489.93-193.226c-17.203 0-31.2-13.998-31.2-31.195 0-17.204 13.997-31.2 31.2-31.2 17.198 0 31.194 13.996 31.194 31.2 0 17.197-13.996 31.195-31.193 31.195m0-127.804c-53.269 0-96.609 43.34-96.609 96.609 0 10.373 1.723 20.702 5.123 30.741L559.328 616.879c-18.132-26.128-47.521-41.617-79.302-41.617-36.821 0-70.391 21.065-86.63 54.003L106.68 478.109c-30.288-15.927-52.965-65.817-50.56-111.223 1.248-23.687 9.438-42.071 21.897-49.17 7.916-4.493 17.436-4.099 27.526 1.188l1.916 1.01c75.96 40.022 324.6 170.981 335.063 175.844 16.157 7.47 25.14 10.5 52.659-2.547l513.958-267.3c7.53-2.844 16.315-10.062 16.315-21.023 0-15.205-15.72-21.199-15.765-21.199-29.218-14.018-74.163-35.054-117.987-55.57C798.033 84.26 691.861 34.547 645.23 10.132c-40.253-21.072-72.655-3.311-78.432.282l-11.227 5.555C345.727 119.743 64.898 258.826 48.911 268.553 20.278 285.973 2.547 320.679.252 363.768c-3.586 68.304 31.261 139.506 81.069 165.634l303.172 156.354c6.83 47.306 47.55 82.725 95.532 82.725 52.78 0 95.808-42.546 96.603-95.14L910.541 492.38c16.93 13.233 37.92 20.486 59.416 20.486 53.268 0 96.61-43.341 96.61-96.61s-43.342-96.61-96.61-96.61" fill-rule="evenodd"></path></g></svg></div><div class="reset-3c756112--trademarkContent-04a01aea"><div class="reset-3c756112"><span class="text-4505230f--TextH200-a3425406--textUIFamily-5ebd8e40">Powered by <b>GitBook</b></span></div></div></a></div></div></div></div></div></div><div class="reset-3c756112--wholeContentPage-6c3f1fc5"><div class="reset-3c756112--wholePageSticky-f53dafd2"><div class="reset-3c756112--pageContainer-3ec6d8d0"><div class="reset-3c756112"><div class="reset-3c756112--pageHeader-15724735"><div class="reset-3c756112--pageHeaderInner-7c0f0284"><div class="reset-3c756112--pageHeaderWrapperContent-6897c946"><div class="reset-3c756112--horizontalFlex-5a0077e0"><div class="reset-3c756112--pageHeaderIntro-0c1463da"><h1 class="reset-3c756112--pageTitle-33dc39a3"><span class="text-4505230f--DisplayH900-bfb998fa--textContentFamily-49a318e1">CryptoJS</span></h1></div><div class="reset-3c756112--toolbar-a6a9f7d2--medium-8e46b02c--pageHeaderToolbar-6457a802--withControlsClosed-3e96e46c" style="grid-template-columns: repeat(1, auto);"><button class="button-36063075--small-30ceeddb--button-4fcaac20--small-54db2a94"><span class="small-3bde6db7--iconOnly-bddce91a"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line></g></svg></span><span class="text-4505230f--UIH300-2063425d--textUIFamily-5ebd8e40--text-8ee2c8b2"></span></button></div></div><div class="reset-3c756112--pageHeaderDescription-22970244"><div class="reset-3c756112--pageDescription-8425f32c"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1">Original documentation: https://code.google.com/archive/p/crypto-js/</span></div></div></div></div></div><div class="reset-3c756112--toaster-c029690e"></div><div class="reset-3c756112--pageBody-a91db4ac"><div data-editioncontainer="true" class="reset-3c756112--container-960c7c26"><div data-slate-editor="true" data-key="4" autocorrect="on" spellcheck="true" data-gramm="false" style="outline: none; white-space: pre-wrap; overflow-wrap: break-word;"><h1 id="documentation" class="blockHeading-442b4f12" data-key="43dc2acbda5a446eb11cf3717baac5cc"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH700-04e1a2a3--textContentFamily-49a318e1"><span data-key="7a15bacf86584d7bb480f42efe5eee6d"><span data-offset-key="7a15bacf86584d7bb480f42efe5eee6d:0">Documentation</span></span></span><a href="https://cryptojs.gitbook.io/docs/#documentation" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div><div role="button" tabindex="0" contenteditable="false" class="reset-3c756112--blockHeadingUp-c32402b2" style="color: rgb(0, 0, 0);"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline></g></svg></div></h1><p class="blockParagraph-544a408c" data-key="e8eaad3f512249389aab5df92051b761"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="1ba7a835601c490eb64c0dbbaa2ef1a5"><span data-offset-key="1ba7a835601c490eb64c0dbbaa2ef1a5:0">JavaScript implementations of standard and secure cryptographic algorithms</span></span></span></p><p class="blockParagraph-544a408c" data-key="0d48896a1a304b55bf238a9c0ec34f62"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="ec748315aa5c409e9264ba934b41ffba"><span data-offset-key="ec748315aa5c409e9264ba934b41ffba:0">CryptoJS is a growing collection of standard and secure cryptographic algorithms implemented in JavaScript using best practices and patterns. They are fast, and they have a consistent and simple interface.</span></span></span></p><p class="blockParagraph-544a408c" data-key="49c4daa49e3d4da69125de61b2f72b30"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="4a18e99dfa1340d49c4357fa7f208fd4"><span data-offset-key="4a18e99dfa1340d49c4357fa7f208fd4:0">If you have a problem with CryptoJS, if you want to discuss new features, or if you want to contribute to the project, you can visit the CryptoJS </span></span><a class="link-a079aa82--primary-53a25e66--link-faf6c434" href="http://groups.google.com/group/crypto-js/topics" target="_blank" rel="noopener noreferrer" data-key="3e439126acce426c98802ed7d73ce486" style="color: rgb(0, 0, 0);"><span data-key="cc7cb17c47594be88e2792a0b8cedb55"><span data-offset-key="cc7cb17c47594be88e2792a0b8cedb55:0">discussion group</span></span></a><span data-key="a7b570ccfc50420abdc6f5e77eac1c96"><span data-offset-key="a7b570ccfc50420abdc6f5e77eac1c96:0">.</span></span></span></p><h2 id="hashing" class="blockHeading-442b4f12--blockHeading2WithMargin-532d771d" data-key="9b2dadabe58344c6b45c891c6798cc9b"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH600-23f228db--textContentFamily-49a318e1"><span data-key="b03b70d4683143c1a56d7943000a6c2b"><span data-offset-key="b03b70d4683143c1a56d7943000a6c2b:0">Hashing</span></span></span><a href="https://cryptojs.gitbook.io/docs/#hashing" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h2><h3 id="the-hashing-algorithms" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="b0e6d3d133854469898ef33d5c992f11"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="1f7f3d0baca0451cabaa4c25dfdee07d"><span data-offset-key="1f7f3d0baca0451cabaa4c25dfdee07d:0">The Hashing Algorithms</span></span></span><a href="https://cryptojs.gitbook.io/docs/#the-hashing-algorithms" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="9259659d813f4816ad4dc2c4bb372f63"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="25cf408ba1044b3aabf991f9f5a87571"><span data-offset-key="25cf408ba1044b3aabf991f9f5a87571:0"><strong class="bold-3c254bd9" data-slate-leaf="true">MD5</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="4d4b057c1c2e49c5be81e6161c783126"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="58c1150ef772401eb48a753b3315ea5b"><span data-offset-key="58c1150ef772401eb48a753b3315ea5b:0">MD5 is a widely used hash function. It's been used in a variety of security applications and is also commonly used to check the integrity of files. Though, MD5 is not collision resistant, and it isn't suitable for applications like SSL certificates or digital signatures that rely on this property.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="c6d135b395a746c8a25c34fd370cc8cb" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="cee6fecca50e49a0886f802795e4221f"><span data-key="a1cbd0c95e544624a892696b59c9cc1f"><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:5"><span class="prism-token token 5 constant ">MD5</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="a1cbd0c95e544624a892696b59c9cc1f:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="d82aa2234def41169fb4bdb8992daebc"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="7a89f223837242e1a4b3b836b42115c9"><span data-offset-key="7a89f223837242e1a4b3b836b42115c9:0"><strong class="bold-3c254bd9" data-slate-leaf="true">SHA-1</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="9eed18135c7d4d6aab8ef0591883b1d1"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="7271e31c873b434badac1604af97a410"><span data-offset-key="7271e31c873b434badac1604af97a410:0">The SHA hash functions were designed by the National Security Agency (NSA). SHA-1 is the most established of the existing SHA hash functions, and it's used in a variety of security applications and protocols. Though, SHA-1's collision resistance has been weakening as new attacks are discovered or improved.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="e2e12db16e11460ca335a0ad6e923a53" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="23c9038a2a444b038d78bc4b21b5ccea"><span data-key="d3baaab3a769413d9b36039e5bd6e4e7"><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:5"><span class="prism-token token 5 constant ">SHA1</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="d3baaab3a769413d9b36039e5bd6e4e7:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="bb2ad32909984a2bbe5a79cc1b501440"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="a8161b5176714e159b2b924568c67c6d"><span data-offset-key="a8161b5176714e159b2b924568c67c6d:0"><strong class="bold-3c254bd9" data-slate-leaf="true">SHA-2</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="8725d7494a6b4f35a2a772dfe24ccda9"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="c7fa0f3532fb4cef85a162b6d96b434b"><span data-offset-key="c7fa0f3532fb4cef85a162b6d96b434b:0">SHA-256 is one of the four variants in the SHA-2 set. It isn't as widely used as SHA-1, though it appears to provide much better security.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="0e20b8cbb0594a82bc3ce7ac05159a6c" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="5989645a919148e695dbc64baca95dce"><span data-key="1d40115125a94007b62dc4d01828f3dd"><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:5"><span class="prism-token token 5 constant ">SHA256</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="1d40115125a94007b62dc4d01828f3dd:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="555121bb8c3b49ea95aa87ede908f772"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="55ba7a128d564dbc8bf9f9c26798274d"><span data-offset-key="55ba7a128d564dbc8bf9f9c26798274d:0">SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="dceaa948a1954b7aaca264c28211bc7f" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="7aa2d70b4c744ae09ee49f976633cc3e"><span data-key="4b9d300e2f684429ba463ba65662b842"><span data-offset-key="4b9d300e2f684429ba463ba65662b842:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:5"><span class="prism-token token 5 constant ">SHA512</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="4b9d300e2f684429ba463ba65662b842:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="79a1008de7de4408a0e00a956a919f1f"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="3bade9fb91ae4e768438d64e918d7008"><span data-offset-key="3bade9fb91ae4e768438d64e918d7008:0">CryptoJS also supports SHA-224 and SHA-384, which are largely identical but truncated versions of SHA-256 and SHA-512 respectively.</span></span></span></p><p class="blockParagraph-544a408c" data-key="d0d425f53dae4f429df5c503c474cb55"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="b19a3d0d08a44af1a73dae0c29a0268f"><span data-offset-key="b19a3d0d08a44af1a73dae0c29a0268f:0"><strong class="bold-3c254bd9" data-slate-leaf="true">SHA-3</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="7e17922a5a574db1b1a1d2966dcb849a"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="1343e5d398b74af881da3ac012d51289"><span data-offset-key="1343e5d398b74af881da3ac012d51289:0">SHA-3 is the winner of a five-year competition to select a new cryptographic hash algorithm where 64 competing designs were evaluated.</span></span></span></p><p class="blockParagraph-544a408c" data-key="f5fa0bb771b24a4e95fb72d3933f28b0"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="7c2ef997f1e9443e85c7985254d4b2b8"><span data-offset-key="7c2ef997f1e9443e85c7985254d4b2b8:0"><strong class="bold-3c254bd9" data-slate-leaf="true">NOTE:</strong></span><span data-offset-key="7c2ef997f1e9443e85c7985254d4b2b8:1"> I made a mistake when I named this implementation SHA-3. It should be named Keccak[c=2d]. Each of the SHA-3 functions is based on an instance of the Keccak algorithm, which NIST selected as the winner of the SHA-3 competition, but those SHA-3 functions won't produce hashes identical to Keccak.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="0f45f59dfd894eefa1676c849a161a8a" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="f72027b7e92f46f39b75eea596ed463b"><span data-key="76dae5c9d6f74e10a28ca5e0d4f6cc08"><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:5"><span class="prism-token token 5 constant ">SHA3</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="76dae5c9d6f74e10a28ca5e0d4f6cc08:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="7cdacb0a2f424f2291c6b220b052729e"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="43d3794882ec4221ab020e9932aa6d92"><span data-offset-key="43d3794882ec4221ab020e9932aa6d92:0">SHA-3 can be configured to output hash lengths of one of 224, 256, 384, or 512 bits. The default is 512 bits.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="fb9760ad4f9a449cb51afb50eccda14f" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="72b652ea1412484e8f2c4338589d3025"><span data-key="1e502d74508346da89c79cee0d2d2dcf"><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:5"><span class="prism-token token 5 constant ">SHA3</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:8"><span class="prism-token token 8 punctuation ">,</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:9"><span class="prism-token token 9"> </span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:10"><span class="prism-token token 10 punctuation ">{</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:11"><span class="prism-token token 11"> outputLength</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:12"><span class="prism-token token 12 punctuation ">:</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:13"><span class="prism-token token 13"> </span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:14"><span class="prism-token token 14 number ">512</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:15"><span class="prism-token token 15"> </span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:16"><span class="prism-token token 16 punctuation ">}</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:17"><span class="prism-token token 17 punctuation ">)</span></span><span data-offset-key="1e502d74508346da89c79cee0d2d2dcf:18"><span class="prism-token token 18 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="8fdde4494d904aebb70ecf49f1011624"><span data-key="4877e5645be94a60baddc7433be0c3dd"><span data-offset-key="4877e5645be94a60baddc7433be0c3dd:0"><span class="prism-token token 19">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="9c6573d920c44878ac6b48fa5f7992dc"><span data-key="7e3776c17f264810962c40db1e127c96"><span data-offset-key="7e3776c17f264810962c40db1e127c96:0"><span class="prism-token token 20 keyword ">var</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:1"><span class="prism-token token 21"> hash </span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:2"><span class="prism-token token 22 operator ">=</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:3"><span class="prism-token token 23"> CryptoJS</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:4"><span class="prism-token token 24 punctuation ">.</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:5"><span class="prism-token token 25 constant ">SHA3</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:6"><span class="prism-token token 26 punctuation ">(</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:7"><span class="prism-token token 27 string ">"Message"</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:8"><span class="prism-token token 28 punctuation ">,</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:9"><span class="prism-token token 29"> </span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:10"><span class="prism-token token 30 punctuation ">{</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:11"><span class="prism-token token 31"> outputLength</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:12"><span class="prism-token token 32 punctuation ">:</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:13"><span class="prism-token token 33"> </span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:14"><span class="prism-token token 34 number ">384</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:15"><span class="prism-token token 35"> </span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:16"><span class="prism-token token 36 punctuation ">}</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:17"><span class="prism-token token 37 punctuation ">)</span></span><span data-offset-key="7e3776c17f264810962c40db1e127c96:18"><span class="prism-token token 38 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="7ca9867879a94fd4835fc6293082b68d"><span data-key="da1e73f8aecd418ca68a9d9a0f624639"><span data-offset-key="da1e73f8aecd418ca68a9d9a0f624639:0"><span class="prism-token token 39">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="b7814b9716304997a48e010d5ab8b79f"><span data-key="ba6b56d5944c42f0a0b107e4f8bfe69d"><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:0"><span class="prism-token token 40 keyword ">var</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:1"><span class="prism-token token 41"> hash </span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:2"><span class="prism-token token 42 operator ">=</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:3"><span class="prism-token token 43"> CryptoJS</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:4"><span class="prism-token token 44 punctuation ">.</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:5"><span class="prism-token token 45 constant ">SHA3</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:6"><span class="prism-token token 46 punctuation ">(</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:7"><span class="prism-token token 47 string ">"Message"</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:8"><span class="prism-token token 48 punctuation ">,</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:9"><span class="prism-token token 49"> </span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:10"><span class="prism-token token 50 punctuation ">{</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:11"><span class="prism-token token 51"> outputLength</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:12"><span class="prism-token token 52 punctuation ">:</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:13"><span class="prism-token token 53"> </span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:14"><span class="prism-token token 54 number ">256</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:15"><span class="prism-token token 55"> </span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:16"><span class="prism-token token 56 punctuation ">}</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:17"><span class="prism-token token 57 punctuation ">)</span></span><span data-offset-key="ba6b56d5944c42f0a0b107e4f8bfe69d:18"><span class="prism-token token 58 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="e6e19a01955d40fc8d785f95ac82f64f"><span data-key="3d87f6509dd54aed891baa6cb456fce6"><span data-offset-key="3d87f6509dd54aed891baa6cb456fce6:0"><span class="prism-token token 59">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="f312cabddd034cce954a56803b7c2aab"><span data-key="b2cf1683ad7348559e7d457548a381a3"><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:0"><span class="prism-token token 60 keyword ">var</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:1"><span class="prism-token token 61"> hash </span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:2"><span class="prism-token token 62 operator ">=</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:3"><span class="prism-token token 63"> CryptoJS</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:4"><span class="prism-token token 64 punctuation ">.</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:5"><span class="prism-token token 65 constant ">SHA3</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:6"><span class="prism-token token 66 punctuation ">(</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:7"><span class="prism-token token 67 string ">"Message"</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:8"><span class="prism-token token 68 punctuation ">,</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:9"><span class="prism-token token 69"> </span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:10"><span class="prism-token token 70 punctuation ">{</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:11"><span class="prism-token token 71"> outputLength</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:12"><span class="prism-token token 72 punctuation ">:</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:13"><span class="prism-token token 73"> </span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:14"><span class="prism-token token 74 number ">224</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:15"><span class="prism-token token 75"> </span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:16"><span class="prism-token token 76 punctuation ">}</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:17"><span class="prism-token token 77 punctuation ">)</span></span><span data-offset-key="b2cf1683ad7348559e7d457548a381a3:18"><span class="prism-token token 78 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="90c0ae5bf165422c9823b8f6694f027e"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="636ea6b9b0944a648c35276e646735e5"><span data-offset-key="636ea6b9b0944a648c35276e646735e5:0"><strong class="bold-3c254bd9" data-slate-leaf="true">RIPEMD-160</strong></span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="857067f285a04c1885f6dd8f5719c87e" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="e0239ac58e424793b43f6d1dc36553b6"><span data-key="3ee5e452a87f48f5824364f3dc60bfc5"><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:5"><span class="prism-token token 5 constant ">RIPEMD160</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="3ee5e452a87f48f5824364f3dc60bfc5:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div></pre></div><h3 id="the-hashing-input" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="9e21e691dd5f4611916d81ee9df7b7e9"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="bea533a8cfe44c8e82f44300bc61c362"><span data-offset-key="bea533a8cfe44c8e82f44300bc61c362:0">The Hashing Input</span></span></span><a href="https://cryptojs.gitbook.io/docs/#the-hashing-input" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="d96711100fcd4802ad083e1dc9e928fb"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="f86834d55d5a4cbeae3625db13e37be1"><span data-offset-key="f86834d55d5a4cbeae3625db13e37be1:0">The hash algorithms accept either strings or instances of CryptoJS.lib.WordArray. A WordArray object represents an array of 32-bit words. When you pass a string, it's automatically converted to a WordArray encoded as UTF-8.</span></span></span></p><h3 id="the-hashing-output" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="ab9afc8e0aab4d27869d9cc66864f9fa"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="6420da5444e741b3b46c40dcfc461eb3"><span data-offset-key="6420da5444e741b3b46c40dcfc461eb3:0">The Hashing Output</span></span></span><a href="https://cryptojs.gitbook.io/docs/#the-hashing-output" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="aba51af328634bdb85fb0a1eeebb8780"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="7f46ec59d8cc43fc8f251b7dcbc9ca8c"><span data-offset-key="7f46ec59d8cc43fc8f251b7dcbc9ca8c:0">The hash you get back isn't a string yet. It's a WordArray object. When you use a WordArray object in a string context, it's automatically converted to a hex string.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="23a2bb1507e9451c97bb7ea6cfbeb8bd" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="c2d8871b4e04476b9b85ddeeca016fc3"><span data-key="2bde99b220a6478994e2b5c37d846bde"><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:5"><span class="prism-token token 5 constant ">SHA256</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="2bde99b220a6478994e2b5c37d846bde:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="1b6f3a80159b489ea35046af1b87578c"><span data-key="b7cde7236a4d417ca69c2d51918a1624"><span data-offset-key="b7cde7236a4d417ca69c2d51918a1624:0"><span class="prism-token token 10">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="8c32e160c7a44a77bc7ab8d8a99e0984"><span data-key="e2651156169c4367a6e36d24d7742a98"><span data-offset-key="e2651156169c4367a6e36d24d7742a98:0"><span class="prism-token token 11 keyword ">typeof</span></span><span data-offset-key="e2651156169c4367a6e36d24d7742a98:1"><span class="prism-token token 12"> hash</span></span></span></div><div class="codeLine-a3169fbc" data-key="ca4c179a63ca4e5cb4eb7928f67aa843"><span data-key="8ec21a8a9c9e43ad918cf802a6acefcb"><span data-offset-key="8ec21a8a9c9e43ad918cf802a6acefcb:0"><span class="prism-token token 13 operator ">&gt;</span></span><span data-offset-key="8ec21a8a9c9e43ad918cf802a6acefcb:1"><span class="prism-token token 14"> </span></span><span data-offset-key="8ec21a8a9c9e43ad918cf802a6acefcb:2"><span class="prism-token token 15 string ">"object"</span></span><span data-offset-key="8ec21a8a9c9e43ad918cf802a6acefcb:3"><span class="prism-token token 16 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="84e98cd7ab1d4f22bcf29176f9f0cfc6"><span data-key="501a37dae01c4c629e614cf4540e7f79"><span data-offset-key="501a37dae01c4c629e614cf4540e7f79:0"><span class="prism-token token 17">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="0630371deed74f7aa86bb45a6eaa3427"><span data-key="5ad1d3655ab54e91ab67f373d78ab69c"><span data-offset-key="5ad1d3655ab54e91ab67f373d78ab69c:0"><span class="prism-token token 17">hash</span></span></span></div><div class="codeLine-a3169fbc" data-key="85327f04b6e54565b1295976fbbc1f0b"><span data-key="06a3d1ca3978498ba9a8693437c426f9"><span data-offset-key="06a3d1ca3978498ba9a8693437c426f9:0"><span class="prism-token token 18 operator ">&gt;</span></span><span data-offset-key="06a3d1ca3978498ba9a8693437c426f9:1"><span class="prism-token token 19"> </span></span><span data-offset-key="06a3d1ca3978498ba9a8693437c426f9:2"><span class="prism-token token 20 string ">"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91"</span></span><span data-offset-key="06a3d1ca3978498ba9a8693437c426f9:3"><span class="prism-token token 21 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="69600f4e8d0e4d988d3b75f6bbba51a5"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="02a84663e545478cba7616cf6b148411"><span data-offset-key="02a84663e545478cba7616cf6b148411:0">You can convert a WordArray object to other formats by explicitly calling the toString method and passing an encoder.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="9bfa1a29ac724157b937e3080f94e746" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="ba61a3a30cf94a80ba1e2159b64a50b1"><span data-key="4cd5d433a54946cbb15be040c0a3466c"><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:5"><span class="prism-token token 5 constant ">SHA256</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:8"><span class="prism-token token 8 punctuation ">)</span></span><span data-offset-key="4cd5d433a54946cbb15be040c0a3466c:9"><span class="prism-token token 9 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="41027456255a417eab7c8add4b5a35e1"><span data-key="a13b8b7018c24b0e9a21cfc3b3168d4e"><span data-offset-key="a13b8b7018c24b0e9a21cfc3b3168d4e:0"><span class="prism-token token 10">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="768e6d79e8584b7a851e8ffc103a3ae6"><span data-key="794938877cb241a594bdf7b399d5fd8b"><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:0"><span class="prism-token token 10">hash</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:1"><span class="prism-token token 11 punctuation ">.</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:2"><span class="prism-token token 12 function ">toString</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:3"><span class="prism-token token 13 punctuation ">(</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:4"><span class="prism-token token 14">CryptoJS</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:5"><span class="prism-token token 15 punctuation ">.</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:6"><span class="prism-token token 16">enc</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:7"><span class="prism-token token 17 punctuation ">.</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:8"><span class="prism-token token 18">Base64</span></span><span data-offset-key="794938877cb241a594bdf7b399d5fd8b:9"><span class="prism-token token 19 punctuation ">)</span></span></span></div><div class="codeLine-a3169fbc" data-key="d244d68f73014ac89080175dc6602601"><span data-key="5ab52303b5164f0baa01aa61babd7ae7"><span data-offset-key="5ab52303b5164f0baa01aa61babd7ae7:0"><span class="prism-token token 21 operator ">&gt;</span></span><span data-offset-key="5ab52303b5164f0baa01aa61babd7ae7:1"><span class="prism-token token 22"> </span></span><span data-offset-key="5ab52303b5164f0baa01aa61babd7ae7:2"><span class="prism-token token 23 string ">"L3dmip37+NWEi57rSnFFypTG7ZI25Kdz9tyvpRMrL5E="</span></span><span data-offset-key="5ab52303b5164f0baa01aa61babd7ae7:3"><span class="prism-token token 24 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="6490e04578f7409395ed7d703a1a7f2c"><span data-key="768181ce93e94785abd7492fedafb6da"><span data-offset-key="768181ce93e94785abd7492fedafb6da:0"><span class="prism-token token 25">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="b43fa40a850b42d8828e72cb960665a1"><span data-key="102c23d137124ddbb47cedbd06650790"><span data-offset-key="102c23d137124ddbb47cedbd06650790:0"><span class="prism-token token 25">hash</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:1"><span class="prism-token token 26 punctuation ">.</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:2"><span class="prism-token token 27 function ">toString</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:3"><span class="prism-token token 28 punctuation ">(</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:4"><span class="prism-token token 29">CryptoJS</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:5"><span class="prism-token token 30 punctuation ">.</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:6"><span class="prism-token token 31">enc</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:7"><span class="prism-token token 32 punctuation ">.</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:8"><span class="prism-token token 33">Hex</span></span><span data-offset-key="102c23d137124ddbb47cedbd06650790:9"><span class="prism-token token 34 punctuation ">)</span></span></span></div><div class="codeLine-a3169fbc" data-key="994711c1c6e94c75bdea178c8aa127cf"><span data-key="71fa8bae14e94e77853a56fcd334941f"><span data-offset-key="71fa8bae14e94e77853a56fcd334941f:0"><span class="prism-token token 36 operator ">&gt;</span></span><span data-offset-key="71fa8bae14e94e77853a56fcd334941f:1"><span class="prism-token token 37"> </span></span><span data-offset-key="71fa8bae14e94e77853a56fcd334941f:2"><span class="prism-token token 38 string ">"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91"</span></span><span data-offset-key="71fa8bae14e94e77853a56fcd334941f:3"><span class="prism-token token 39 punctuation ">;</span></span></span></div></pre></div><h3 id="progressive-hashing" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="435f9ec7183140fcabdb436686fe047e"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="ca26f6ac366f4b349deae8714a194378"><span data-offset-key="ca26f6ac366f4b349deae8714a194378:0">Progressive Hashing</span></span></span><a href="https://cryptojs.gitbook.io/docs/#progressive-hashing" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="75bb710a001f4487a1892e7d82b65280" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="418de05b0eed413db0fe7d5cfcf93005"><span data-key="1c7546b88aaa43a3b6c839a82a89cc9b"><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:1"><span class="prism-token token 1"> sha256 </span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:5"><span class="prism-token token 5">algo</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:7"><span class="prism-token token 7 constant ">SHA256</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:8"><span class="prism-token token 8 punctuation ">.</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:9"><span class="prism-token token 9 function ">create</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:10"><span class="prism-token token 10 punctuation ">(</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:11"><span class="prism-token token 11 punctuation ">)</span></span><span data-offset-key="1c7546b88aaa43a3b6c839a82a89cc9b:12"><span class="prism-token token 12 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="abef636d606d4de8bfa1c141ce81624c"><span data-key="c0c4ec93eba242fb91843c576a0cb5ef"><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:0"><span class="prism-token token 13">sha256</span></span><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:1"><span class="prism-token token 14 punctuation ">.</span></span><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:2"><span class="prism-token token 15 function ">update</span></span><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:3"><span class="prism-token token 16 punctuation ">(</span></span><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:4"><span class="prism-token token 17 string ">"Message Part 1"</span></span><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:5"><span class="prism-token token 18 punctuation ">)</span></span><span data-offset-key="c0c4ec93eba242fb91843c576a0cb5ef:6"><span class="prism-token token 19 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="b95b6bd5efcc44cc8f78961b00d9d8fa"><span data-key="e6399683c62d4e02b71be6db8e9ee82f"><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:0"><span class="prism-token token 20">sha256</span></span><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:1"><span class="prism-token token 21 punctuation ">.</span></span><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:2"><span class="prism-token token 22 function ">update</span></span><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:3"><span class="prism-token token 23 punctuation ">(</span></span><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:4"><span class="prism-token token 24 string ">"Message Part 2"</span></span><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:5"><span class="prism-token token 25 punctuation ">)</span></span><span data-offset-key="e6399683c62d4e02b71be6db8e9ee82f:6"><span class="prism-token token 26 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="8e2f95559d534d999324700c247efd76"><span data-key="b45b02912ebd4175b60f89a1f91b45b7"><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:0"><span class="prism-token token 27">sha256</span></span><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:1"><span class="prism-token token 28 punctuation ">.</span></span><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:2"><span class="prism-token token 29 function ">update</span></span><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:3"><span class="prism-token token 30 punctuation ">(</span></span><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:4"><span class="prism-token token 31 string ">"Message Part 3"</span></span><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:5"><span class="prism-token token 32 punctuation ">)</span></span><span data-offset-key="b45b02912ebd4175b60f89a1f91b45b7:6"><span class="prism-token token 33 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="adf4e1c5e87c4cf496b9c77fd75563ff"><span data-key="4af96dff9ac9481b87a23d1be22991ce"><span data-offset-key="4af96dff9ac9481b87a23d1be22991ce:0"><span class="prism-token token 34">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="d5a4c8a6489e4007977b311dfe1d13a4"><span data-key="e9ef04c2726149309c9fce667c41b977"><span data-offset-key="e9ef04c2726149309c9fce667c41b977:0"><span class="prism-token token 35 keyword ">var</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:1"><span class="prism-token token 36"> hash </span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:2"><span class="prism-token token 37 operator ">=</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:3"><span class="prism-token token 38"> sha256</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:4"><span class="prism-token token 39 punctuation ">.</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:5"><span class="prism-token token 40 function ">finalize</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:6"><span class="prism-token token 41 punctuation ">(</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:7"><span class="prism-token token 42 punctuation ">)</span></span><span data-offset-key="e9ef04c2726149309c9fce667c41b977:8"><span class="prism-token token 43 punctuation ">;</span></span></span></div></pre></div><h2 id="hmac" class="blockHeading-442b4f12--blockHeading2WithMargin-532d771d" data-key="5778a4e994f5484eaf253207a0389882"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH600-23f228db--textContentFamily-49a318e1"><span data-key="608ae642344847828e409d9a21a0002e"><span data-offset-key="608ae642344847828e409d9a21a0002e:0">HMAC</span></span></span><a href="https://cryptojs.gitbook.io/docs/#hmac" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h2><p class="blockParagraph-544a408c" data-key="9ca1b4ec8c9349d7beb0e4dc27bc73e3"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="c48b9f0f674346e6bc4dc209c1c0c159"><span data-offset-key="c48b9f0f674346e6bc4dc209c1c0c159:0">Keyed-hash message authentication codes (HMAC) is a mechanism for message authentication using cryptographic hash functions.</span></span></span></p><p class="blockParagraph-544a408c" data-key="6867a6c09a724a3b87c1cd20a2200a31"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="04845c79a7a74fc1af3144b1efb658fd"><span data-offset-key="04845c79a7a74fc1af3144b1efb658fd:0">HMAC can be used in combination with any iterated cryptographic hash function.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="304013f26f4b497da174ca642f74dc93" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="34c559e512604e99b8edb484c023472e"><span data-key="356750aafdb24e32bbb60200b412f08e"><span data-offset-key="356750aafdb24e32bbb60200b412f08e:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:1"><span class="prism-token token 1"> hash </span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:5"><span class="prism-token token 5 function ">HmacMD5</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:6"><span class="prism-token token 6 punctuation ">(</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:7"><span class="prism-token token 7 string ">"Message"</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:8"><span class="prism-token token 8 punctuation ">,</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:9"><span class="prism-token token 9"> </span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:10"><span class="prism-token token 10 string ">"Secret Passphrase"</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:11"><span class="prism-token token 11 punctuation ">)</span></span><span data-offset-key="356750aafdb24e32bbb60200b412f08e:12"><span class="prism-token token 12 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="de611d83fb7f42a4888ecf59dc5f1c22"><span data-key="45f911f130f64c4f965fe8b539e734d6"><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:0"><span class="prism-token token 14 keyword ">var</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:1"><span class="prism-token token 15"> hash </span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:2"><span class="prism-token token 16 operator ">=</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:3"><span class="prism-token token 17"> CryptoJS</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:4"><span class="prism-token token 18 punctuation ">.</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:5"><span class="prism-token token 19 function ">HmacSHA1</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:6"><span class="prism-token token 20 punctuation ">(</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:7"><span class="prism-token token 21 string ">"Message"</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:8"><span class="prism-token token 22 punctuation ">,</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:9"><span class="prism-token token 23"> </span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:10"><span class="prism-token token 24 string ">"Secret Passphrase"</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:11"><span class="prism-token token 25 punctuation ">)</span></span><span data-offset-key="45f911f130f64c4f965fe8b539e734d6:12"><span class="prism-token token 26 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="c54510a369804b3f959082aa30da3123"><span data-key="c4e3c1fa80a24691acb4bb24b62f330d"><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:0"><span class="prism-token token 28 keyword ">var</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:1"><span class="prism-token token 29"> hash </span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:2"><span class="prism-token token 30 operator ">=</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:3"><span class="prism-token token 31"> CryptoJS</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:4"><span class="prism-token token 32 punctuation ">.</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:5"><span class="prism-token token 33 function ">HmacSHA256</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:6"><span class="prism-token token 34 punctuation ">(</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:7"><span class="prism-token token 35 string ">"Message"</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:8"><span class="prism-token token 36 punctuation ">,</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:9"><span class="prism-token token 37"> </span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:10"><span class="prism-token token 38 string ">"Secret Passphrase"</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:11"><span class="prism-token token 39 punctuation ">)</span></span><span data-offset-key="c4e3c1fa80a24691acb4bb24b62f330d:12"><span class="prism-token token 40 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="77f78d7eaba245e69258a68327082a2b"><span data-key="3255084b82fa47e69ae1c962ca34e441"><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:0"><span class="prism-token token 42 keyword ">var</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:1"><span class="prism-token token 43"> hash </span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:2"><span class="prism-token token 44 operator ">=</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:3"><span class="prism-token token 45"> CryptoJS</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:4"><span class="prism-token token 46 punctuation ">.</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:5"><span class="prism-token token 47 function ">HmacSHA512</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:6"><span class="prism-token token 48 punctuation ">(</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:7"><span class="prism-token token 49 string ">"Message"</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:8"><span class="prism-token token 50 punctuation ">,</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:9"><span class="prism-token token 51"> </span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:10"><span class="prism-token token 52 string ">"Secret Passphrase"</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:11"><span class="prism-token token 53 punctuation ">)</span></span><span data-offset-key="3255084b82fa47e69ae1c962ca34e441:12"><span class="prism-token token 54 punctuation ">;</span></span></span></div></pre></div><h3 id="progressive-hmac-hashing" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="63fe2e915f7940b58b12cef2dd017d77"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="a4dd5ca9d0dd4334b345709761024627"><span data-offset-key="a4dd5ca9d0dd4334b345709761024627:0">Progressive HMAC Hashing</span></span></span><a href="https://cryptojs.gitbook.io/docs/#progressive-hmac-hashing" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="2d2efbcb20494994bfd9c2530b44a97b" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="8f462245a6824de1ab7aa6f599669d87"><span data-key="0b260561982a477a876dc5ea2d6ff0cd"><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:1"><span class="prism-token token 1"> hmac </span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:5"><span class="prism-token token 5">algo</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:7"><span class="prism-token token 7 constant ">HMAC</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:8"><span class="prism-token token 8 punctuation ">.</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:9"><span class="prism-token token 9 function ">create</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:10"><span class="prism-token token 10 punctuation ">(</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:11"><span class="prism-token token 11">CryptoJS</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:12"><span class="prism-token token 12 punctuation ">.</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:13"><span class="prism-token token 13">algo</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:14"><span class="prism-token token 14 punctuation ">.</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:15"><span class="prism-token token 15 constant ">SHA256</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:16"><span class="prism-token token 16 punctuation ">,</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:17"><span class="prism-token token 17"> </span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:18"><span class="prism-token token 18 string ">"Secret Passphrase"</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:19"><span class="prism-token token 19 punctuation ">)</span></span><span data-offset-key="0b260561982a477a876dc5ea2d6ff0cd:20"><span class="prism-token token 20 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="0a485f8388264f95b3cc0b25379a5748"><span data-key="34b8c3ae75134003a2a5210276823347"><span data-offset-key="34b8c3ae75134003a2a5210276823347:0"><span class="prism-token token 21">hmac</span></span><span data-offset-key="34b8c3ae75134003a2a5210276823347:1"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="34b8c3ae75134003a2a5210276823347:2"><span class="prism-token token 23 function ">update</span></span><span data-offset-key="34b8c3ae75134003a2a5210276823347:3"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="34b8c3ae75134003a2a5210276823347:4"><span class="prism-token token 25 string ">"Message Part 1"</span></span><span data-offset-key="34b8c3ae75134003a2a5210276823347:5"><span class="prism-token token 26 punctuation ">)</span></span><span data-offset-key="34b8c3ae75134003a2a5210276823347:6"><span class="prism-token token 27 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="0f8c96f598d9487d8cd6c11e1bf24088"><span data-key="d3c09041e5fb479a9c4c6022f24e3996"><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:0"><span class="prism-token token 28">hmac</span></span><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:1"><span class="prism-token token 29 punctuation ">.</span></span><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:2"><span class="prism-token token 30 function ">update</span></span><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:3"><span class="prism-token token 31 punctuation ">(</span></span><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:4"><span class="prism-token token 32 string ">"Message Part 2"</span></span><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:5"><span class="prism-token token 33 punctuation ">)</span></span><span data-offset-key="d3c09041e5fb479a9c4c6022f24e3996:6"><span class="prism-token token 34 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="fd7bdd4e714c40c294fc2897ae982cd0"><span data-key="071b57fdd8d645c1a717ad6bccae00b3"><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:0"><span class="prism-token token 35">hmac</span></span><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:1"><span class="prism-token token 36 punctuation ">.</span></span><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:2"><span class="prism-token token 37 function ">update</span></span><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:3"><span class="prism-token token 38 punctuation ">(</span></span><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:4"><span class="prism-token token 39 string ">"Message Part 3"</span></span><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:5"><span class="prism-token token 40 punctuation ">)</span></span><span data-offset-key="071b57fdd8d645c1a717ad6bccae00b3:6"><span class="prism-token token 41 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="fda618d8ee214659bfdca51f8bb45773"><span data-key="86ec700b4fbf4bd89f2a7e93d71c5e20"><span data-offset-key="86ec700b4fbf4bd89f2a7e93d71c5e20:0"><span class="prism-token token 42">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="fe30243dcacc444cb7f1e874bb06928b"><span data-key="1d0c261421e4483fb8f49c991ea7bc7b"><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:0"><span class="prism-token token 43 keyword ">var</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:1"><span class="prism-token token 44"> hash </span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:2"><span class="prism-token token 45 operator ">=</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:3"><span class="prism-token token 46"> hmac</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:4"><span class="prism-token token 47 punctuation ">.</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:5"><span class="prism-token token 48 function ">finalize</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:6"><span class="prism-token token 49 punctuation ">(</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:7"><span class="prism-token token 50 punctuation ">)</span></span><span data-offset-key="1d0c261421e4483fb8f49c991ea7bc7b:8"><span class="prism-token token 51 punctuation ">;</span></span></span></div></pre></div><h2 id="pbkdf2" class="blockHeading-442b4f12--blockHeading2WithMargin-532d771d" data-key="e92e6fe44d984b13bf616b8e66a80b50"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH600-23f228db--textContentFamily-49a318e1"><span data-key="b89635022ba642a1b11550caec6dd51c"><span data-offset-key="b89635022ba642a1b11550caec6dd51c:0">PBKDF2</span></span></span><a href="https://cryptojs.gitbook.io/docs/#pbkdf2" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h2><p class="blockParagraph-544a408c" data-key="33bc32e5c8864bbaacce1ed4bca6443c"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="114234a58a1c4a1b998045cc735c8a78"><span data-offset-key="114234a58a1c4a1b998045cc735c8a78:0">PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required.</span></span></span></p><p class="blockParagraph-544a408c" data-key="c7ae4a014e014eabbe41d3d8a0a727bc"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="d6a6f5f23c0c4c00890bedd09b2e8bcf"><span data-offset-key="d6a6f5f23c0c4c00890bedd09b2e8bcf:0">A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="d1d06027da3641528d3bd0550328b6e3" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="cf3a3f176a934209aa90fc8977f6a91b"><span data-key="a366b2c0d3f24110a01d8affece22bbb"><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:1"><span class="prism-token token 1"> salt </span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:5"><span class="prism-token token 5">lib</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:7"><span class="prism-token token 7">WordArray</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:8"><span class="prism-token token 8 punctuation ">.</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:9"><span class="prism-token token 9 function ">random</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:10"><span class="prism-token token 10 punctuation ">(</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:11"><span class="prism-token token 11 number ">128</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:12"><span class="prism-token token 12"> </span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:13"><span class="prism-token token 13 operator ">/</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:14"><span class="prism-token token 14"> </span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:15"><span class="prism-token token 15 number ">8</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:16"><span class="prism-token token 16 punctuation ">)</span></span><span data-offset-key="a366b2c0d3f24110a01d8affece22bbb:17"><span class="prism-token token 17 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="780aed61d93945908776c57ef058119d"><span data-key="6d0a325afc1f47ebb3231cc597409544"><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:0"><span class="prism-token token 19 keyword ">var</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:1"><span class="prism-token token 20"> key128Bits </span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:2"><span class="prism-token token 21 operator ">=</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:3"><span class="prism-token token 22"> CryptoJS</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:4"><span class="prism-token token 23 punctuation ">.</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:5"><span class="prism-token token 24 constant ">PBKDF2</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:6"><span class="prism-token token 25 punctuation ">(</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:7"><span class="prism-token token 26 string ">"Secret Passphrase"</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:8"><span class="prism-token token 27 punctuation ">,</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:9"><span class="prism-token token 28"> salt</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:10"><span class="prism-token token 29 punctuation ">,</span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:11"><span class="prism-token token 30"> </span></span><span data-offset-key="6d0a325afc1f47ebb3231cc597409544:12"><span class="prism-token token 31 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="d66aaace355d4f0394c9aecdffb8061f"><span data-key="efdf1b3b5d624de59159079cc1c7cbf2"><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:0"><span class="prism-token token 32">  keySize</span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:1"><span class="prism-token token 33 punctuation ">:</span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:2"><span class="prism-token token 34"> </span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:3"><span class="prism-token token 35 number ">128</span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:4"><span class="prism-token token 36"> </span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:5"><span class="prism-token token 37 operator ">/</span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:6"><span class="prism-token token 38"> </span></span><span data-offset-key="efdf1b3b5d624de59159079cc1c7cbf2:7"><span class="prism-token token 39 number ">32</span></span></span></div><div class="codeLine-a3169fbc" data-key="133cb90506f245cdb2ed199e4e0baad3"><span data-key="cf7ced2ee2fc49c19ab6923131bf9907"><span data-offset-key="cf7ced2ee2fc49c19ab6923131bf9907:0"><span class="prism-token token 41 punctuation ">}</span></span><span data-offset-key="cf7ced2ee2fc49c19ab6923131bf9907:1"><span class="prism-token token 42 punctuation ">)</span></span><span data-offset-key="cf7ced2ee2fc49c19ab6923131bf9907:2"><span class="prism-token token 43 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="b2a267d762e54bc8838b19537674b55f"><span data-key="33d3b7e94f8d4c26879afc40f9573302"><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:0"><span class="prism-token token 45 keyword ">var</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:1"><span class="prism-token token 46"> key256Bits </span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:2"><span class="prism-token token 47 operator ">=</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:3"><span class="prism-token token 48"> CryptoJS</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:4"><span class="prism-token token 49 punctuation ">.</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:5"><span class="prism-token token 50 constant ">PBKDF2</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:6"><span class="prism-token token 51 punctuation ">(</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:7"><span class="prism-token token 52 string ">"Secret Passphrase"</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:8"><span class="prism-token token 53 punctuation ">,</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:9"><span class="prism-token token 54"> salt</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:10"><span class="prism-token token 55 punctuation ">,</span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:11"><span class="prism-token token 56"> </span></span><span data-offset-key="33d3b7e94f8d4c26879afc40f9573302:12"><span class="prism-token token 57 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="d4e0b8a7ea204cc3bd31a5902f1ab588"><span data-key="987336f3b2894a1ca4d19f41132df1e9"><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:0"><span class="prism-token token 58">  keySize</span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:1"><span class="prism-token token 59 punctuation ">:</span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:2"><span class="prism-token token 60"> </span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:3"><span class="prism-token token 61 number ">256</span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:4"><span class="prism-token token 62"> </span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:5"><span class="prism-token token 63 operator ">/</span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:6"><span class="prism-token token 64"> </span></span><span data-offset-key="987336f3b2894a1ca4d19f41132df1e9:7"><span class="prism-token token 65 number ">32</span></span></span></div><div class="codeLine-a3169fbc" data-key="ff9c936c3c084d3f940d48d76a3f62fe"><span data-key="3c95290eda424ca2acfe92c8016d0619"><span data-offset-key="3c95290eda424ca2acfe92c8016d0619:0"><span class="prism-token token 67 punctuation ">}</span></span><span data-offset-key="3c95290eda424ca2acfe92c8016d0619:1"><span class="prism-token token 68 punctuation ">)</span></span><span data-offset-key="3c95290eda424ca2acfe92c8016d0619:2"><span class="prism-token token 69 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="c82a7196e56e44d8b2cf37a3faa89ffd"><span data-key="b181d89816ba42648e873825950417aa"><span data-offset-key="b181d89816ba42648e873825950417aa:0"><span class="prism-token token 71 keyword ">var</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:1"><span class="prism-token token 72"> key512Bits </span></span><span data-offset-key="b181d89816ba42648e873825950417aa:2"><span class="prism-token token 73 operator ">=</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:3"><span class="prism-token token 74"> CryptoJS</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:4"><span class="prism-token token 75 punctuation ">.</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:5"><span class="prism-token token 76 constant ">PBKDF2</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:6"><span class="prism-token token 77 punctuation ">(</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:7"><span class="prism-token token 78 string ">"Secret Passphrase"</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:8"><span class="prism-token token 79 punctuation ">,</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:9"><span class="prism-token token 80"> salt</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:10"><span class="prism-token token 81 punctuation ">,</span></span><span data-offset-key="b181d89816ba42648e873825950417aa:11"><span class="prism-token token 82"> </span></span><span data-offset-key="b181d89816ba42648e873825950417aa:12"><span class="prism-token token 83 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="1369711907424097a944e6e1813f3886"><span data-key="7d11baea30374ea0996fa924c5b5f91d"><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:0"><span class="prism-token token 84">  keySize</span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:1"><span class="prism-token token 85 punctuation ">:</span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:2"><span class="prism-token token 86"> </span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:3"><span class="prism-token token 87 number ">512</span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:4"><span class="prism-token token 88"> </span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:5"><span class="prism-token token 89 operator ">/</span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:6"><span class="prism-token token 90"> </span></span><span data-offset-key="7d11baea30374ea0996fa924c5b5f91d:7"><span class="prism-token token 91 number ">32</span></span></span></div><div class="codeLine-a3169fbc" data-key="b8467056a01049b1a7d667a97d3a3626"><span data-key="5ccd1a2df6c84635971649292a471edd"><span data-offset-key="5ccd1a2df6c84635971649292a471edd:0"><span class="prism-token token 93 punctuation ">}</span></span><span data-offset-key="5ccd1a2df6c84635971649292a471edd:1"><span class="prism-token token 94 punctuation ">)</span></span><span data-offset-key="5ccd1a2df6c84635971649292a471edd:2"><span class="prism-token token 95 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="cf146d5a9aef48efb473b28821fbc2e6"><span data-key="fe39ef51108941f6830cbab77d297166"><span data-offset-key="fe39ef51108941f6830cbab77d297166:0"><span class="prism-token token 97 keyword ">var</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:1"><span class="prism-token token 98"> key512Bits1000Iterations </span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:2"><span class="prism-token token 99 operator ">=</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:3"><span class="prism-token token 100"> CryptoJS</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:4"><span class="prism-token token 101 punctuation ">.</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:5"><span class="prism-token token 102 constant ">PBKDF2</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:6"><span class="prism-token token 103 punctuation ">(</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:7"><span class="prism-token token 104 string ">"Secret Passphrase"</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:8"><span class="prism-token token 105 punctuation ">,</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:9"><span class="prism-token token 106"> salt</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:10"><span class="prism-token token 107 punctuation ">,</span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:11"><span class="prism-token token 108"> </span></span><span data-offset-key="fe39ef51108941f6830cbab77d297166:12"><span class="prism-token token 109 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="f3221d4c5dec4057ac9f4b5970dd7c57"><span data-key="bbf978dff90141b0958c6028495b372c"><span data-offset-key="bbf978dff90141b0958c6028495b372c:0"><span class="prism-token token 110">  keySize</span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:1"><span class="prism-token token 111 punctuation ">:</span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:2"><span class="prism-token token 112"> </span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:3"><span class="prism-token token 113 number ">512</span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:4"><span class="prism-token token 114"> </span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:5"><span class="prism-token token 115 operator ">/</span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:6"><span class="prism-token token 116"> </span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:7"><span class="prism-token token 117 number ">32</span></span><span data-offset-key="bbf978dff90141b0958c6028495b372c:8"><span class="prism-token token 118 punctuation ">,</span></span></span></div><div class="codeLine-a3169fbc" data-key="5f23257bcba04119a7a642aa8cc9fe1e"><span data-key="e5b6c52fe38b4de09ba46ea1776d5f6c"><span data-offset-key="e5b6c52fe38b4de09ba46ea1776d5f6c:0"><span class="prism-token token 119">  iterations</span></span><span data-offset-key="e5b6c52fe38b4de09ba46ea1776d5f6c:1"><span class="prism-token token 120 punctuation ">:</span></span><span data-offset-key="e5b6c52fe38b4de09ba46ea1776d5f6c:2"><span class="prism-token token 121"> </span></span><span data-offset-key="e5b6c52fe38b4de09ba46ea1776d5f6c:3"><span class="prism-token token 122 number ">1000</span></span></span></div><div class="codeLine-a3169fbc" data-key="68232a4814884844abab71cccec73178"><span data-key="ed8c8859edf94fae88a3e837cf76b641"><span data-offset-key="ed8c8859edf94fae88a3e837cf76b641:0"><span class="prism-token token 124 punctuation ">}</span></span><span data-offset-key="ed8c8859edf94fae88a3e837cf76b641:1"><span class="prism-token token 125 punctuation ">)</span></span><span data-offset-key="ed8c8859edf94fae88a3e837cf76b641:2"><span class="prism-token token 126 punctuation ">;</span></span></span></div></pre></div><h2 id="ciphers" class="blockHeading-442b4f12--blockHeading2WithMargin-532d771d" data-key="042c4409c91747bd8004979178c38ad1"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH600-23f228db--textContentFamily-49a318e1"><span data-key="50f45f130a8341c0bef3555f4758bf76"><span data-offset-key="50f45f130a8341c0bef3555f4758bf76:0">Ciphers</span></span></span><a href="https://cryptojs.gitbook.io/docs/#ciphers" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h2><h3 id="the-cipher-algorithms" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="4e96fb6cd4a64817bec6b709d5768167"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="d67ae3ba8ddf42bf956eeebee5126d1f"><span data-offset-key="d67ae3ba8ddf42bf956eeebee5126d1f:0">The Cipher Algorithms</span></span></span><a href="https://cryptojs.gitbook.io/docs/#the-cipher-algorithms" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="37891a678b0040d28bfb75c251512620"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="e647c2e177d9473b8e0e10e1961a1ca7"><span data-offset-key="e647c2e177d9473b8e0e10e1961a1ca7:0"><strong class="bold-3c254bd9" data-slate-leaf="true">AES</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="ee195777517b4c5795c0110346167e58"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="07c7c6ccc6f3464c9818d6cf49a8161b"><span data-offset-key="07c7c6ccc6f3464c9818d6cf49a8161b:0">The Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="4a71c0eeb44d4a21abe0e0a47a170a2e" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="10864cdc89be44b484ae8c3ee864ef28"><span data-key="199c9d904f204270b40add01db7b6d65"><span data-offset-key="199c9d904f204270b40add01db7b6d65:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:5"><span class="prism-token token 5 constant ">AES</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:11"><span class="prism-token token 11"> </span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="199c9d904f204270b40add01db7b6d65:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="7a03c37a850042acb11006b2b5732607"><span data-key="a1c944888a474530889c5d8f7631baa5"><span data-offset-key="a1c944888a474530889c5d8f7631baa5:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="a349ce9999084f0480582ed7456974a3"><span data-key="eae42faf44c24a2eb7b8ef9e293ca586"><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:0"><span class="prism-token token 16 keyword ">var</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:1"><span class="prism-token token 17"> decrypted </span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:2"><span class="prism-token token 18 operator ">=</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:3"><span class="prism-token token 19"> CryptoJS</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:4"><span class="prism-token token 20 punctuation ">.</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:5"><span class="prism-token token 21 constant ">AES</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:6"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:7"><span class="prism-token token 23 function ">decrypt</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:8"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:9"><span class="prism-token token 25">encrypted</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:10"><span class="prism-token token 26 punctuation ">,</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:11"><span class="prism-token token 27"> </span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:12"><span class="prism-token token 28 string ">"Secret Passphrase"</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:13"><span class="prism-token token 29 punctuation ">)</span></span><span data-offset-key="eae42faf44c24a2eb7b8ef9e293ca586:14"><span class="prism-token token 30 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="016ae0968d4d49c4bd70115698269256"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="4ab8f076ea7f45a3a5a1e35f298ce168"><span data-offset-key="4ab8f076ea7f45a3a5a1e35f298ce168:0">CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.</span></span></span></p><p class="blockParagraph-544a408c" data-key="1c417d4c067342d0979cb14ac3edc394"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="1ee9b008387641b09c6bfdcb101deb7c"><span data-offset-key="1ee9b008387641b09c6bfdcb101deb7c:0"><strong class="bold-3c254bd9" data-slate-leaf="true">DES, Triple DES</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="590c0f8311c64a73911953ebc48cda4c"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="074fd6bc1122427487cb547a0645532c"><span data-offset-key="074fd6bc1122427487cb547a0645532c:0">DES is a previously dominant algorithm for encryption, and was published as an official Federal Information Processing Standard (FIPS). DES is now considered to be insecure due to the small key size.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="d483a61579044193a5a364899d65229a" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="65a02d4963c749b88a4bb3fe5a11081f"><span data-key="b6d25fbfa45849188635e3c6cb411e72"><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:5"><span class="prism-token token 5 constant ">DES</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:11"><span class="prism-token token 11"> </span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="b6d25fbfa45849188635e3c6cb411e72:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="aa741dc6a7864063a07adf07d586c953"><span data-key="5c824d74b9ec44959d35af9764a040e0"><span data-offset-key="5c824d74b9ec44959d35af9764a040e0:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="1865258eda9a4ab29446e685221b47c5"><span data-key="42224469f6c34dd888cbfdd7b718b3c0"><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:0"><span class="prism-token token 16 keyword ">var</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:1"><span class="prism-token token 17"> decrypted </span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:2"><span class="prism-token token 18 operator ">=</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:3"><span class="prism-token token 19"> CryptoJS</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:4"><span class="prism-token token 20 punctuation ">.</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:5"><span class="prism-token token 21 constant ">DES</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:6"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:7"><span class="prism-token token 23 function ">decrypt</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:8"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:9"><span class="prism-token token 25">encrypted</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:10"><span class="prism-token token 26 punctuation ">,</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:11"><span class="prism-token token 27"> </span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:12"><span class="prism-token token 28 string ">"Secret Passphrase"</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:13"><span class="prism-token token 29 punctuation ">)</span></span><span data-offset-key="42224469f6c34dd888cbfdd7b718b3c0:14"><span class="prism-token token 30 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="6f072e2990a94652b4789b92b1b8381f"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="8a4dc3b919c44258a28e374493110581"><span data-offset-key="8a4dc3b919c44258a28e374493110581:0">Triple DES applies DES three times to each block to increase the key size. The algorithm is believed to be secure in this form.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="76d6911078484c42a5e312808c7728b0" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="b289aca61d574498acbea98a8e846313"><span data-key="75112edc0fdf46a6810592f30ad7edba"><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:5"><span class="prism-token token 5">TripleDES</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:11"><span class="prism-token token 11"> </span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="75112edc0fdf46a6810592f30ad7edba:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="9777eced6ada4dbbaeb5c7760e0c60ef"><span data-key="4df0a18731d646b8a9d37d3e8db3138d"><span data-offset-key="4df0a18731d646b8a9d37d3e8db3138d:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="30828c52abee4f09bb87b2211c3638e6"><span data-key="02ac2ab3834143c588af97984fe09970"><span data-offset-key="02ac2ab3834143c588af97984fe09970:0"><span class="prism-token token 16 keyword ">var</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:1"><span class="prism-token token 17"> decrypted </span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:2"><span class="prism-token token 18 operator ">=</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:3"><span class="prism-token token 19"> CryptoJS</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:4"><span class="prism-token token 20 punctuation ">.</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:5"><span class="prism-token token 21">TripleDES</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:6"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:7"><span class="prism-token token 23 function ">decrypt</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:8"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:9"><span class="prism-token token 25">encrypted</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:10"><span class="prism-token token 26 punctuation ">,</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:11"><span class="prism-token token 27"> </span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:12"><span class="prism-token token 28 string ">"Secret Passphrase"</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:13"><span class="prism-token token 29 punctuation ">)</span></span><span data-offset-key="02ac2ab3834143c588af97984fe09970:14"><span class="prism-token token 30 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="e80d3d890b59489cad525f4aef22173e"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="fcf9ea27655647f2bccfed481157adf5"><span data-offset-key="fcf9ea27655647f2bccfed481157adf5:0"><strong class="bold-3c254bd9" data-slate-leaf="true">Rabbit</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="9502471385ca45089bca1cadd6fce9ec"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="13867677a8e44bb5abe407538e731912"><span data-offset-key="13867677a8e44bb5abe407538e731912:0">Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2-year process where 22 designs were evaluated.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="082f1bdc3b3740fa86d45653b6103b67" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="56489617bf95486db597c47d1a197c9e"><span data-key="44b58fc6671e41f69b70b71553d76ae5"><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:5"><span class="prism-token token 5">Rabbit</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:11"><span class="prism-token token 11"> </span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="44b58fc6671e41f69b70b71553d76ae5:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="77eac2200bf54dafb666c89d58f5f941"><span data-key="e44b66f98d844498b084408718652b2c"><span data-offset-key="e44b66f98d844498b084408718652b2c:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="8f96bbfe0dcb4f668f4df3febaab2732"><span data-key="57f1d2fcfc474609a840d10083ffd179"><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:0"><span class="prism-token token 16 keyword ">var</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:1"><span class="prism-token token 17"> decrypted </span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:2"><span class="prism-token token 18 operator ">=</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:3"><span class="prism-token token 19"> CryptoJS</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:4"><span class="prism-token token 20 punctuation ">.</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:5"><span class="prism-token token 21">Rabbit</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:6"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:7"><span class="prism-token token 23 function ">decrypt</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:8"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:9"><span class="prism-token token 25">encrypted</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:10"><span class="prism-token token 26 punctuation ">,</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:11"><span class="prism-token token 27"> </span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:12"><span class="prism-token token 28 string ">"Secret Passphrase"</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:13"><span class="prism-token token 29 punctuation ">)</span></span><span data-offset-key="57f1d2fcfc474609a840d10083ffd179:14"><span class="prism-token token 30 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="b8a97ed20a3242ddab450350810efda8"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="80397b7be390438c8025be3ecd678d8e"><span data-offset-key="80397b7be390438c8025be3ecd678d8e:0"><strong class="bold-3c254bd9" data-slate-leaf="true">RC4, RC4Drop</strong></span></span></span></p><p class="blockParagraph-544a408c" data-key="bdaf372d955f43909360e46348ce6fab"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="33b0106de76f408e87dcd089c3087e0d"><span data-offset-key="33b0106de76f408e87dcd089c3087e0d:0">RC4 is a widely-used stream cipher. It's used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm's history doesn't inspire confidence in its security.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="4eb9d0d304de4919bd579ff904c3d4c0" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="92232205a92d46109b1a48b48c53f662"><span data-key="f38650473873457db12785014bbc2731"><span data-offset-key="f38650473873457db12785014bbc2731:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="f38650473873457db12785014bbc2731:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="f38650473873457db12785014bbc2731:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="f38650473873457db12785014bbc2731:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="f38650473873457db12785014bbc2731:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="f38650473873457db12785014bbc2731:5"><span class="prism-token token 5 constant ">RC4</span></span><span data-offset-key="f38650473873457db12785014bbc2731:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="f38650473873457db12785014bbc2731:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="f38650473873457db12785014bbc2731:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="f38650473873457db12785014bbc2731:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="f38650473873457db12785014bbc2731:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="f38650473873457db12785014bbc2731:11"><span class="prism-token token 11"> </span></span><span data-offset-key="f38650473873457db12785014bbc2731:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="f38650473873457db12785014bbc2731:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="f38650473873457db12785014bbc2731:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="907afd4b260c4465af86dd48cb4cede1"><span data-key="15804f9dc4264fb8a8c7a5bb29e8ad8b"><span data-offset-key="15804f9dc4264fb8a8c7a5bb29e8ad8b:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="094fbac3935f4e90be1127421bf4e503"><span data-key="da90182a76c84c1ba677b9b069e420a0"><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:0"><span class="prism-token token 16 keyword ">var</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:1"><span class="prism-token token 17"> decrypted </span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:2"><span class="prism-token token 18 operator ">=</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:3"><span class="prism-token token 19"> CryptoJS</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:4"><span class="prism-token token 20 punctuation ">.</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:5"><span class="prism-token token 21 constant ">RC4</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:6"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:7"><span class="prism-token token 23 function ">decrypt</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:8"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:9"><span class="prism-token token 25">encrypted</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:10"><span class="prism-token token 26 punctuation ">,</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:11"><span class="prism-token token 27"> </span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:12"><span class="prism-token token 28 string ">"Secret Passphrase"</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:13"><span class="prism-token token 29 punctuation ">)</span></span><span data-offset-key="da90182a76c84c1ba677b9b069e420a0:14"><span class="prism-token token 30 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="a2d67665d1fd4423833a40719ea156a9"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="64ca3c5a94d44739b5fd970c268d2699"><span data-offset-key="64ca3c5a94d44739b5fd970c268d2699:0">It was discovered that the first few bytes of keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop.</span></span></span></p><p class="blockParagraph-544a408c" data-key="9c8c12821faf42879f5d31143a550d88"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="d2cfd7a5e93b4b9493ff97ce5b78869f"><span data-offset-key="d2cfd7a5e93b4b9493ff97ce5b78869f:0">By default, 192 words (768 bytes) are dropped, but you can configure the algorithm to drop any number of words.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="16739c752b0b4eed9daef982fde87b74" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="af824ea429ea46b0b16d8f36063852f1"><span data-key="45ab199c9c6d462484f30cee710e60f0"><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:5"><span class="prism-token token 5">RC4Drop</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:11"><span class="prism-token token 11"> </span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="45ab199c9c6d462484f30cee710e60f0:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="e56e784e1b7745359b089294a5c25ec0"><span data-key="e5f1192e8c174e39b0e80c43cdee2c71"><span data-offset-key="e5f1192e8c174e39b0e80c43cdee2c71:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="57ca031f9a5e41afb201c3cd3daf6125"><span data-key="466922872f124e66a9ce0423a6c4996c"><span data-offset-key="466922872f124e66a9ce0423a6c4996c:0"><span class="prism-token token 16 keyword ">var</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:1"><span class="prism-token token 17"> encrypted </span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:2"><span class="prism-token token 18 operator ">=</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:3"><span class="prism-token token 19"> CryptoJS</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:4"><span class="prism-token token 20 punctuation ">.</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:5"><span class="prism-token token 21">RC4Drop</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:6"><span class="prism-token token 22 punctuation ">.</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:7"><span class="prism-token token 23 function ">encrypt</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:8"><span class="prism-token token 24 punctuation ">(</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:9"><span class="prism-token token 25 string ">"Message"</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:10"><span class="prism-token token 26 punctuation ">,</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:11"><span class="prism-token token 27"> </span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:12"><span class="prism-token token 28 string ">"Secret Passphrase"</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:13"><span class="prism-token token 29 punctuation ">,</span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:14"><span class="prism-token token 30"> </span></span><span data-offset-key="466922872f124e66a9ce0423a6c4996c:15"><span class="prism-token token 31 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="9e056ed60db24a3091a51eba796c4ddf"><span data-key="62ce5fa73b2c44d2ab143fc75999ebdd"><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:0"><span class="prism-token token 32">  drop</span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:1"><span class="prism-token token 33 punctuation ">:</span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:2"><span class="prism-token token 34"> </span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:3"><span class="prism-token token 35 number ">3072</span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:4"><span class="prism-token token 36"> </span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:5"><span class="prism-token token 37 operator ">/</span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:6"><span class="prism-token token 38"> </span></span><span data-offset-key="62ce5fa73b2c44d2ab143fc75999ebdd:7"><span class="prism-token token 39 number ">4</span></span></span></div><div class="codeLine-a3169fbc" data-key="5da2684c32534d0a949e4129c923ddbe"><span data-key="8deb228fdf4d4a8f856636e3c72bfda5"><span data-offset-key="8deb228fdf4d4a8f856636e3c72bfda5:0"><span class="prism-token token 41 punctuation ">}</span></span><span data-offset-key="8deb228fdf4d4a8f856636e3c72bfda5:1"><span class="prism-token token 42 punctuation ">)</span></span><span data-offset-key="8deb228fdf4d4a8f856636e3c72bfda5:2"><span class="prism-token token 43 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="85b8bef2aa074a6db85dfc5be4bee7fd"><span data-key="7ab01417df0f46e78e55be3b6465f17a"><span data-offset-key="7ab01417df0f46e78e55be3b6465f17a:0"><span class="prism-token token 44">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="9fac4d7f6c254ecdb4b28801b8d88bb1"><span data-key="99b1397d8ff94feea46b027251b287f9"><span data-offset-key="99b1397d8ff94feea46b027251b287f9:0"><span class="prism-token token 45 keyword ">var</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:1"><span class="prism-token token 46"> decrypted </span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:2"><span class="prism-token token 47 operator ">=</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:3"><span class="prism-token token 48"> CryptoJS</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:4"><span class="prism-token token 49 punctuation ">.</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:5"><span class="prism-token token 50">RC4Drop</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:6"><span class="prism-token token 51 punctuation ">.</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:7"><span class="prism-token token 52 function ">decrypt</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:8"><span class="prism-token token 53 punctuation ">(</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:9"><span class="prism-token token 54">encrypted</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:10"><span class="prism-token token 55 punctuation ">,</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:11"><span class="prism-token token 56"> </span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:12"><span class="prism-token token 57 string ">"Secret Passphrase"</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:13"><span class="prism-token token 58 punctuation ">,</span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:14"><span class="prism-token token 59"> </span></span><span data-offset-key="99b1397d8ff94feea46b027251b287f9:15"><span class="prism-token token 60 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="cbe9bdc0a40040c388e31aee4c2f3328"><span data-key="c605e3a991274850ae5b2689615c6fa4"><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:0"><span class="prism-token token 61">  drop</span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:1"><span class="prism-token token 62 punctuation ">:</span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:2"><span class="prism-token token 63"> </span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:3"><span class="prism-token token 64 number ">3072</span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:4"><span class="prism-token token 65"> </span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:5"><span class="prism-token token 66 operator ">/</span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:6"><span class="prism-token token 67"> </span></span><span data-offset-key="c605e3a991274850ae5b2689615c6fa4:7"><span class="prism-token token 68 number ">4</span></span></span></div><div class="codeLine-a3169fbc" data-key="653f174e7a2a4ae688914a297cd4a05b"><span data-key="8c83b1bf769b47b8848d08f837d2bf8d"><span data-offset-key="8c83b1bf769b47b8848d08f837d2bf8d:0"><span class="prism-token token 70 punctuation ">}</span></span><span data-offset-key="8c83b1bf769b47b8848d08f837d2bf8d:1"><span class="prism-token token 71 punctuation ">)</span></span><span data-offset-key="8c83b1bf769b47b8848d08f837d2bf8d:2"><span class="prism-token token 72 punctuation ">;</span></span></span></div></pre></div><h3 id="custom-key-and-iv" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="fb6eef907efd420e8c344589d4b9f0d3"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="4d21d91998564d8d8e98e640c982085c"><span data-offset-key="4d21d91998564d8d8e98e640c982085c:0">Custom Key and IV</span></span></span><a href="https://cryptojs.gitbook.io/docs/#custom-key-and-iv" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="ca6052e0ae284bc9ab3e1ef77b64d44f" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="3e59465f1cb245ebb4ec8d3b027aaf1d"><span data-key="5ff1d7bd24354e399db73e91c7ef7de2"><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:1"><span class="prism-token token 1"> key </span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:5"><span class="prism-token token 5">enc</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:7"><span class="prism-token token 7">Hex</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:8"><span class="prism-token token 8 punctuation ">.</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:9"><span class="prism-token token 9 function ">parse</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:10"><span class="prism-token token 10 punctuation ">(</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:11"><span class="prism-token token 11 string ">"000102030405060708090a0b0c0d0e0f"</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:12"><span class="prism-token token 12 punctuation ">)</span></span><span data-offset-key="5ff1d7bd24354e399db73e91c7ef7de2:13"><span class="prism-token token 13 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="349f74a621c04329a3f1d805a07e9e5e"><span data-key="f2cc206b943642d28e7ac63173c76ea4"><span data-offset-key="f2cc206b943642d28e7ac63173c76ea4:0"><span class="prism-token token 14">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="fcb5adf7d4b34666baf3919e22684f5a"><span data-key="7fe9dbe1fc4545ddb5368b36884bf205"><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:0"><span class="prism-token token 15 keyword ">var</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:1"><span class="prism-token token 16"> iv </span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:2"><span class="prism-token token 17 operator ">=</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:3"><span class="prism-token token 18"> CryptoJS</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:4"><span class="prism-token token 19 punctuation ">.</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:5"><span class="prism-token token 20">enc</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:6"><span class="prism-token token 21 punctuation ">.</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:7"><span class="prism-token token 22">Hex</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:8"><span class="prism-token token 23 punctuation ">.</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:9"><span class="prism-token token 24 function ">parse</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:10"><span class="prism-token token 25 punctuation ">(</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:11"><span class="prism-token token 26 string ">"101112131415161718191a1b1c1d1e1f"</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:12"><span class="prism-token token 27 punctuation ">)</span></span><span data-offset-key="7fe9dbe1fc4545ddb5368b36884bf205:13"><span class="prism-token token 28 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="b30d4f5d214c4600aa8f1fb850a7a476"><span data-key="91a151651b6d496c8d955af474cc558f"><span data-offset-key="91a151651b6d496c8d955af474cc558f:0"><span class="prism-token token 29">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="4670ec3437984daaa03cf7398e83fe77"><span data-key="c36bd0c854f644d1a90da0e1f29ed15d"><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:0"><span class="prism-token token 30 keyword ">var</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:1"><span class="prism-token token 31"> encrypted </span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:2"><span class="prism-token token 32 operator ">=</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:3"><span class="prism-token token 33"> CryptoJS</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:4"><span class="prism-token token 34 punctuation ">.</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:5"><span class="prism-token token 35 constant ">AES</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:6"><span class="prism-token token 36 punctuation ">.</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:7"><span class="prism-token token 37 function ">encrypt</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:8"><span class="prism-token token 38 punctuation ">(</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:9"><span class="prism-token token 39 string ">"Message"</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:10"><span class="prism-token token 40 punctuation ">,</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:11"><span class="prism-token token 41"> key</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:12"><span class="prism-token token 42 punctuation ">,</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:13"><span class="prism-token token 43"> </span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:14"><span class="prism-token token 44 punctuation ">{</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:15"><span class="prism-token token 45"> iv</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:16"><span class="prism-token token 46 punctuation ">:</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:17"><span class="prism-token token 47"> iv </span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:18"><span class="prism-token token 48 punctuation ">}</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:19"><span class="prism-token token 49 punctuation ">)</span></span><span data-offset-key="c36bd0c854f644d1a90da0e1f29ed15d:20"><span class="prism-token token 50 punctuation ">;</span></span></span></div></pre></div><h3 id="block-modes-and-padding" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="085d3300ecb04c39a33658536a7657ca"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="7d6edf2cfbcc47d38c83ff9daa216722"><span data-offset-key="7d6edf2cfbcc47d38c83ff9daa216722:0">Block Modes and Padding</span></span></span><a href="https://cryptojs.gitbook.io/docs/#block-modes-and-padding" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="a653419b5b674906bd09ab829e1ab635" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="498a61f3f860476890758a53a71061b5"><span data-key="964185916fc34ac09f7313d4154a377a"><span data-offset-key="964185916fc34ac09f7313d4154a377a:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:5"><span class="prism-token token 5 constant ">AES</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:11"><span class="prism-token token 11"> </span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:13"><span class="prism-token token 13 punctuation ">,</span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:14"><span class="prism-token token 14"> </span></span><span data-offset-key="964185916fc34ac09f7313d4154a377a:15"><span class="prism-token token 15 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="b7113cf16448473897091a623f6ad780"><span data-key="23778538a199412e846cb90515c1cb61"><span data-offset-key="23778538a199412e846cb90515c1cb61:0"><span class="prism-token token 16">  mode</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:1"><span class="prism-token token 17 punctuation ">:</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:2"><span class="prism-token token 18"> CryptoJS</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:3"><span class="prism-token token 19 punctuation ">.</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:4"><span class="prism-token token 20">mode</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:5"><span class="prism-token token 21 punctuation ">.</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:6"><span class="prism-token token 22 constant ">CFB</span></span><span data-offset-key="23778538a199412e846cb90515c1cb61:7"><span class="prism-token token 23 punctuation ">,</span></span></span></div><div class="codeLine-a3169fbc" data-key="5fa44d1414404260af433d8fb0ef0c66"><span data-key="9d5f8b2a3b85415ba9985b13661cccf2"><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:0"><span class="prism-token token 24">  padding</span></span><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:1"><span class="prism-token token 25 punctuation ">:</span></span><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:2"><span class="prism-token token 26"> CryptoJS</span></span><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:3"><span class="prism-token token 27 punctuation ">.</span></span><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:4"><span class="prism-token token 28">pad</span></span><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:5"><span class="prism-token token 29 punctuation ">.</span></span><span data-offset-key="9d5f8b2a3b85415ba9985b13661cccf2:6"><span class="prism-token token 30">AnsiX923</span></span></span></div><div class="codeLine-a3169fbc" data-key="e6e627cb8e8b4bc0b9d94f49a615b541"><span data-key="d79fc58df493465f8e221fa1506b2499"><span data-offset-key="d79fc58df493465f8e221fa1506b2499:0"><span class="prism-token token 31 punctuation ">}</span></span><span data-offset-key="d79fc58df493465f8e221fa1506b2499:1"><span class="prism-token token 32 punctuation ">)</span></span><span data-offset-key="d79fc58df493465f8e221fa1506b2499:2"><span class="prism-token token 33 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="9fb877aad11648168ad8a3ef63b3cbde"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="21999099bf3c40ba8e13a4791ecef6ff"><span data-offset-key="21999099bf3c40ba8e13a4791ecef6ff:0">CryptoJS supports the following modes:</span></span></span></p><ul class="list-20526648" data-key="801257787f1842c780133657114f7059"><li class=""><div data-key="9fb8315abffa4e7ca98b93a9d73ca772" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="8406a87a7c9a488780bc131a17909532"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="c6f029b54dab4f8699f406c2cfdf1e5a"><span data-offset-key="c6f029b54dab4f8699f406c2cfdf1e5a:0">CBC (the default)</span></span></span></p></div></li><li class=""><div data-key="52f622e9909c4b5e9c5328d5f9e8354b" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="0b0906dabac64756b68dc5a991340c5f"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="172c2e2228b14e578f07c6f309da96db"><span data-offset-key="172c2e2228b14e578f07c6f309da96db:0">CFB</span></span></span></p></div></li><li class=""><div data-key="810c3f8744684faaad7214271371444c" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="c4121f3cdb5a4180b7e2b0d37535a4be"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="8f265da2b0734ca0a5d0563470e1334b"><span data-offset-key="8f265da2b0734ca0a5d0563470e1334b:0">CTR</span></span></span></p></div></li><li class=""><div data-key="8c8dd9a061b74dcb801f626db0614b37" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="c1ba84cf54f0410b80196cbff6d35f92"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="b6d9304a8bbc46a3b379e7534f2854ff"><span data-offset-key="b6d9304a8bbc46a3b379e7534f2854ff:0">OFB</span></span></span></p></div></li><li class=""><div data-key="5819cb108f314570a2d945f99f4fd480" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="d45ebecb287847cb93eb99cd35cf0625"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="fc93e103f39b4b499ad3ae4f06a9d288"><span data-offset-key="fc93e103f39b4b499ad3ae4f06a9d288:0">ECB</span></span></span></p></div></li></ul><p class="blockParagraph-544a408c" data-key="3c3e21e72fdf4b13a4e5f60d83a22b27"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="eb3d806b944a45bfa5d6eb206315b6bd"><span data-offset-key="eb3d806b944a45bfa5d6eb206315b6bd:0">And CryptoJS supports the following padding schemes:</span></span></span></p><ul class="list-20526648" data-key="a3c681ae792648139f9a46d681adc14a"><li class=""><div data-key="a9d8d86619b64955b185f3853fe2ed92" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="dc770fa69c0b4d0daf3b32b138e7d8c8"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="043155a005fc4c53877618b12e5b5740"><span data-offset-key="043155a005fc4c53877618b12e5b5740:0">Pkcs7 (the default)</span></span></span></p></div></li><li class=""><div data-key="3dc13284e2074604bb3e9e4af2cb1c6b" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="2552e0fbe01449b6870af6c4f9ac869e"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="e8f24f5e86b044319311ef6843e0c1ed"><span data-offset-key="e8f24f5e86b044319311ef6843e0c1ed:0">Iso97971</span></span></span></p></div></li><li class=""><div data-key="d7114b48adc748648742bddb525f4032" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="924bc92a74fc47d9a96fc72a6b0ff810"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="3316954e4433452b80a865eb32ed9cc9"><span data-offset-key="3316954e4433452b80a865eb32ed9cc9:0">AnsiX923</span></span></span></p></div></li><li class=""><div data-key="928a7bfde1bb4dde995ece4f11539e08" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="95fde5b9d8224c4c8056227bda947753"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="1d86a6269e714e9592c51710df657a8c"><span data-offset-key="1d86a6269e714e9592c51710df657a8c:0">Iso10126</span></span></span></p></div></li><li class=""><div data-key="b3ce76e652c941ec80e50c178de20f89" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="65eae16c49c045ab82cffb5dc62a1567"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="c3c73cb1ad9840158d21c31da8bb0191"><span data-offset-key="c3c73cb1ad9840158d21c31da8bb0191:0">ZeroPadding</span></span></span></p></div></li><li class=""><div data-key="e373a5a5b88742a4b90fdb6a910f12e2" class="reset-3c756112--listItemContent-756c9114"><p class="blockParagraph-544a408c--noMargin-acdf7afa" data-key="df561bd792c1492ca2c2359ca01bec0c"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="4914b2c1e3b549d4a88078aa47e15ea3"><span data-offset-key="4914b2c1e3b549d4a88078aa47e15ea3:0">NoPadding</span></span></span></p></div></li></ul><h3 id="the-cipher-input" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="beb51a0b72e04e48a3b557818718ce8e"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="fd32291f4ce6409787d1ab250e998199"><span data-offset-key="fd32291f4ce6409787d1ab250e998199:0">The Cipher Input</span></span></span><a href="https://cryptojs.gitbook.io/docs/#the-cipher-input" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="013903ea96934b3f9af45f240f73258a"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="8b5b8dadb78a4cf98683e99a993cce5f"><span data-offset-key="8b5b8dadb78a4cf98683e99a993cce5f:0">For the plaintext message, the cipher algorithms accept either strings or instances of CryptoJS.lib.WordArray.</span></span></span></p><p class="blockParagraph-544a408c" data-key="8a79219181254ea492680f50b5826d49"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="1dae18f8481248869f34b732f91ae5f1"><span data-offset-key="1dae18f8481248869f34b732f91ae5f1:0">For the key, when you pass a string, it's treated as a passphrase and used to derive an actual key and IV. Or you can pass a WordArray that represents the actual key. If you pass the actual key, you must also pass the actual IV.</span></span></span></p><p class="blockParagraph-544a408c" data-key="1da9903a800f46a3a9aab8e43588d409"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="3c0b0a41572b4c6d893a5e1ed1319283"><span data-offset-key="3c0b0a41572b4c6d893a5e1ed1319283:0">For the ciphertext, the cipher algorithms accept either strings or instances of CryptoJS.lib.CipherParams. A CipherParams object represents a collection of parameters such as the IV, a salt, and the raw ciphertext itself. When you pass a string, it's automatically converted to a CipherParams object according to a configurable format strategy.</span></span></span></p><h3 id="the-cipher-output" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="1258414cb28e466a80c6abbafef6e57b"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="94eca018b20b4d53bcf18ae609ad3cf3"><span data-offset-key="94eca018b20b4d53bcf18ae609ad3cf3:0">The Cipher Output</span></span></span><a href="https://cryptojs.gitbook.io/docs/#the-cipher-output" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="5d00309d832c4dbd845a140f3a17c5b4"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="b4953ace9a6e42cd91ab4db8f8b55134"><span data-offset-key="b4953ace9a6e42cd91ab4db8f8b55134:0">The plaintext you get back after decryption is a WordArray object. See Hashing's Output for more detail.</span></span></span></p><p class="blockParagraph-544a408c" data-key="5ecffef88e4c40f9bd572c240dec0084"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="fa1b96d2e59548b88cb632513035d3ef"><span data-offset-key="fa1b96d2e59548b88cb632513035d3ef:0">The ciphertext you get back after encryption isn't a string yet. It's a CipherParams object. A CipherParams object gives you access to all the parameters used during encryption. When you use a CipherParams object in a string context, it's automatically converted to a string according to a format strategy. The default is an OpenSSL-compatible format.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="2282f16b31d243178e64dd003d3568a1" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="22f87e66bfe34a70a26d1af9e91531ed"><span data-key="128c16c5341a4f24a79bf78596c5c62b"><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:1"><span class="prism-token token 1"> encrypted </span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:5"><span class="prism-token token 5 constant ">AES</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:7"><span class="prism-token token 7 function ">encrypt</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:9"><span class="prism-token token 9 string ">"Message"</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:11"><span class="prism-token token 11"> </span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="128c16c5341a4f24a79bf78596c5c62b:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="ff9524a4a2a149c983db20af91d60ea5"><span data-key="3e18efcc32d94639876af06de884ebd9"><span data-offset-key="3e18efcc32d94639876af06de884ebd9:0"><span class="prism-token token 15">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="71ea93f9f6ed4f1f99b1f7bc074b962c"><span data-key="22966b36f867462891ae16b51ed7a9e3"><span data-offset-key="22966b36f867462891ae16b51ed7a9e3:0"><span class="prism-token token 15">encrypted</span></span><span data-offset-key="22966b36f867462891ae16b51ed7a9e3:1"><span class="prism-token token 16 punctuation ">.</span></span><span data-offset-key="22966b36f867462891ae16b51ed7a9e3:2"><span class="prism-token token 17">key</span></span></span></div><div class="codeLine-a3169fbc" data-key="80818ea21ce84d25a6356371fcc7eeb3"><span data-key="7b1a9c561b7942f2890675ad5c28ec0c"><span data-offset-key="7b1a9c561b7942f2890675ad5c28ec0c:0"><span class="prism-token token 18 operator ">&gt;</span></span><span data-offset-key="7b1a9c561b7942f2890675ad5c28ec0c:1"><span class="prism-token token 19"> </span></span><span data-offset-key="7b1a9c561b7942f2890675ad5c28ec0c:2"><span class="prism-token token 20 string ">"74eb593087a982e2a6f5dded54ecd96d1fd0f3d44a58728cdcd40c55227522223 "</span></span><span data-offset-key="7b1a9c561b7942f2890675ad5c28ec0c:3"><span class="prism-token token 21 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="74953ae1ab4f49669261bacbd8bfff38"><span data-key="9bbad0933db947da81269517d5a7a385"><span data-offset-key="9bbad0933db947da81269517d5a7a385:0"><span class="prism-token token 22">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="4e11f1b8eba244989d691b50d7cc08fc"><span data-key="e2e31737228641639e3e2a8e54148b5b"><span data-offset-key="e2e31737228641639e3e2a8e54148b5b:0"><span class="prism-token token 22">encrypted</span></span><span data-offset-key="e2e31737228641639e3e2a8e54148b5b:1"><span class="prism-token token 23 punctuation ">.</span></span><span data-offset-key="e2e31737228641639e3e2a8e54148b5b:2"><span class="prism-token token 24">iv</span></span></span></div><div class="codeLine-a3169fbc" data-key="ff8a385a0d53417d88509f4183939980"><span data-key="d6b303b62c1b417fbadcb0b94cec685c"><span data-offset-key="d6b303b62c1b417fbadcb0b94cec685c:0"><span class="prism-token token 25 operator ">&gt;</span></span><span data-offset-key="d6b303b62c1b417fbadcb0b94cec685c:1"><span class="prism-token token 26"> </span></span><span data-offset-key="d6b303b62c1b417fbadcb0b94cec685c:2"><span class="prism-token token 27 string ">"7781157e2629b094f0e3dd48c4d786115"</span></span><span data-offset-key="d6b303b62c1b417fbadcb0b94cec685c:3"><span class="prism-token token 28 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="40ddae36332f45deaead174e9b2ace68"><span data-key="bc577ed0929d4633ac485eeef248a957"><span data-offset-key="bc577ed0929d4633ac485eeef248a957:0"><span class="prism-token token 29">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="1a83cb67cce948b68b5c9fb906aeafc7"><span data-key="4a18aac5e485495a932433b0755d1521"><span data-offset-key="4a18aac5e485495a932433b0755d1521:0"><span class="prism-token token 29">encrypted</span></span><span data-offset-key="4a18aac5e485495a932433b0755d1521:1"><span class="prism-token token 30 punctuation ">.</span></span><span data-offset-key="4a18aac5e485495a932433b0755d1521:2"><span class="prism-token token 31">salt</span></span></span></div><div class="codeLine-a3169fbc" data-key="16035b8185ed4597bac9ea52cb15c57c"><span data-key="de453dbb81f84ffe9629b1943bf29506"><span data-offset-key="de453dbb81f84ffe9629b1943bf29506:0"><span class="prism-token token 32 operator ">&gt;</span></span><span data-offset-key="de453dbb81f84ffe9629b1943bf29506:1"><span class="prism-token token 33"> </span></span><span data-offset-key="de453dbb81f84ffe9629b1943bf29506:2"><span class="prism-token token 34 string ">"7a25f9132ec6a8b34"</span></span><span data-offset-key="de453dbb81f84ffe9629b1943bf29506:3"><span class="prism-token token 35 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="54b3af42875248ff91f3fb58b06bba16"><span data-key="2e47757c43544a9196853a57931d2287"><span data-offset-key="2e47757c43544a9196853a57931d2287:0"><span class="prism-token token 36">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="97ce198edf7448f3889716730a181928"><span data-key="a7ec77743d514774b20b57ee51059679"><span data-offset-key="a7ec77743d514774b20b57ee51059679:0"><span class="prism-token token 36">encrypted</span></span><span data-offset-key="a7ec77743d514774b20b57ee51059679:1"><span class="prism-token token 37 punctuation ">.</span></span><span data-offset-key="a7ec77743d514774b20b57ee51059679:2"><span class="prism-token token 38">ciphertext</span></span></span></div><div class="codeLine-a3169fbc" data-key="600d417cb4514af798ae96a6b31a7f24"><span data-key="0666ce2cb937401bb926998a92c33119"><span data-offset-key="0666ce2cb937401bb926998a92c33119:0"><span class="prism-token token 39 operator ">&gt;</span></span><span data-offset-key="0666ce2cb937401bb926998a92c33119:1"><span class="prism-token token 40"> </span></span><span data-offset-key="0666ce2cb937401bb926998a92c33119:2"><span class="prism-token token 41 string ">"73e54154a15d1beeb509d9e12f1e462a0"</span></span><span data-offset-key="0666ce2cb937401bb926998a92c33119:3"><span class="prism-token token 42 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="16091ccdd4564c83b0167b7acfc3f186"><span data-key="22b3d7057dc94ddda5a004eb59f4bbe1"><span data-offset-key="22b3d7057dc94ddda5a004eb59f4bbe1:0"><span class="prism-token token 43">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="a91904cdddae48769fb4f2979f7e5d0b"><span data-key="13b420d23b85405faa4135179e060fa9"><span data-offset-key="13b420d23b85405faa4135179e060fa9:0"><span class="prism-token token 43">encrypted</span></span></span></div><div class="codeLine-a3169fbc" data-key="19df285f55e54ddf8233f4171cd67427"><span data-key="95d6ae05163148e8adb0bb8e7ebb6eb7"><span data-offset-key="95d6ae05163148e8adb0bb8e7ebb6eb7:0"><span class="prism-token token 44 operator ">&gt;</span></span><span data-offset-key="95d6ae05163148e8adb0bb8e7ebb6eb7:1"><span class="prism-token token 45"> </span></span><span data-offset-key="95d6ae05163148e8adb0bb8e7ebb6eb7:2"><span class="prism-token token 46 string ">"U2FsdGVkX1+iX5Ey7GqLND5UFUoV0b7rUJ2eEvHkYqA="</span></span><span data-offset-key="95d6ae05163148e8adb0bb8e7ebb6eb7:3"><span class="prism-token token 47 punctuation ">;</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="5613363a4d5f469fb789d882b784a5e9"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="230a7af406254a42917e5e755af172af"><span data-offset-key="230a7af406254a42917e5e755af172af:0">You can define your own formats in order to be compatible with other crypto implementations. A format is an object with two methods— stringify and parse—that converts between CipherParams objects and ciphertext strings.</span></span></span></p><p class="blockParagraph-544a408c" data-key="626bcbe1fdf94ceda8d8abe5d633df80"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="27ee6b19dd244f20b0ae2ace35342f65"><span data-offset-key="27ee6b19dd244f20b0ae2ace35342f65:0">Here's how you might write a JSON formatter:</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="f41c436a796e40f2aeb411ea5df87f92" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="e96d32b1b02548e6b1b17e6dc62dc379"><span data-key="042479f0454f458fb069c2b42ef52a72"><span data-offset-key="042479f0454f458fb069c2b42ef52a72:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="042479f0454f458fb069c2b42ef52a72:1"><span class="prism-token token 1"> JsonFormatter </span></span><span data-offset-key="042479f0454f458fb069c2b42ef52a72:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="042479f0454f458fb069c2b42ef52a72:3"><span class="prism-token token 3"> </span></span><span data-offset-key="042479f0454f458fb069c2b42ef52a72:4"><span class="prism-token token 4 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="dd9832069ffb4c4a8207bdc8118a73d3"><span data-key="79c41f0d715440ac98a89d0f7280f5ce"><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:0"><span class="prism-token token 5">  stringify</span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:1"><span class="prism-token token 6 punctuation ">:</span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:2"><span class="prism-token token 7"> </span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:3"><span class="prism-token token 8 keyword ">function</span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:4"><span class="prism-token token 9 punctuation ">(</span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:5"><span class="prism-token token 10">cipherParams</span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:6"><span class="prism-token token 11 punctuation ">)</span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:7"><span class="prism-token token 12"> </span></span><span data-offset-key="79c41f0d715440ac98a89d0f7280f5ce:8"><span class="prism-token token 13 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="fe0d9d4ffb64459aaeecfa43dfca92e9"><span data-key="4e28351bc256453ea167a575fca907b0"><span data-offset-key="4e28351bc256453ea167a575fca907b0:0"><span class="prism-token token 14">    </span></span><span data-offset-key="4e28351bc256453ea167a575fca907b0:1"><span class="prism-token token 15 comment ">// create json object with ciphertext</span></span></span></div><div class="codeLine-a3169fbc" data-key="b3330d6b6b7643d1ac9f8de48f545672"><span data-key="3465e92e2b4b4bc3bd09fb72ba4d9d97"><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:0"><span class="prism-token token 16">    </span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:1"><span class="prism-token token 17 keyword ">var</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:2"><span class="prism-token token 18"> jsonObj </span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:3"><span class="prism-token token 19 operator ">=</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:4"><span class="prism-token token 20"> </span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:5"><span class="prism-token token 21 punctuation ">{</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:6"><span class="prism-token token 22"> ct</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:7"><span class="prism-token token 23 punctuation ">:</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:8"><span class="prism-token token 24"> cipherParams</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:9"><span class="prism-token token 25 punctuation ">.</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:10"><span class="prism-token token 26">ciphertext</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:11"><span class="prism-token token 27 punctuation ">.</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:12"><span class="prism-token token 28 function ">toString</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:13"><span class="prism-token token 29 punctuation ">(</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:14"><span class="prism-token token 30">CryptoJS</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:15"><span class="prism-token token 31 punctuation ">.</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:16"><span class="prism-token token 32">enc</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:17"><span class="prism-token token 33 punctuation ">.</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:18"><span class="prism-token token 34">Base64</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:19"><span class="prism-token token 35 punctuation ">)</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:20"><span class="prism-token token 36"> </span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:21"><span class="prism-token token 37 punctuation ">}</span></span><span data-offset-key="3465e92e2b4b4bc3bd09fb72ba4d9d97:22"><span class="prism-token token 38 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="9ed9f84a7a2943d2a54a78b29a53c46d"><span data-key="1da5c113ec494603800ad14eb811829e"><span data-offset-key="1da5c113ec494603800ad14eb811829e:0"><span class="prism-token token 39">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="cb7358a62eb94f98b3ea756c9416489f"><span data-key="dcf0ad7cc1c444b4aa0610ed5c9b7c29"><span data-offset-key="dcf0ad7cc1c444b4aa0610ed5c9b7c29:0"><span class="prism-token token 39">    </span></span><span data-offset-key="dcf0ad7cc1c444b4aa0610ed5c9b7c29:1"><span class="prism-token token 40 comment ">// optionally add iv or salt</span></span></span></div><div class="codeLine-a3169fbc" data-key="59ce962535074c8a9533def443db93cb"><span data-key="b0f4dc91034b4bc88605eb62188cd752"><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:0"><span class="prism-token token 41">    </span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:1"><span class="prism-token token 42 keyword ">if</span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:2"><span class="prism-token token 43"> </span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:3"><span class="prism-token token 44 punctuation ">(</span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:4"><span class="prism-token token 45">cipherParams</span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:5"><span class="prism-token token 46 punctuation ">.</span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:6"><span class="prism-token token 47">iv</span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:7"><span class="prism-token token 48 punctuation ">)</span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:8"><span class="prism-token token 49"> </span></span><span data-offset-key="b0f4dc91034b4bc88605eb62188cd752:9"><span class="prism-token token 50 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="414aeea7ee48424ab9e76301a482b5a8"><span data-key="58980410161b493b99c520c8aeaac508"><span data-offset-key="58980410161b493b99c520c8aeaac508:0"><span class="prism-token token 51">      jsonObj</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:1"><span class="prism-token token 52 punctuation ">.</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:2"><span class="prism-token token 53">iv </span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:3"><span class="prism-token token 54 operator ">=</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:4"><span class="prism-token token 55"> cipherParams</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:5"><span class="prism-token token 56 punctuation ">.</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:6"><span class="prism-token token 57">iv</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:7"><span class="prism-token token 58 punctuation ">.</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:8"><span class="prism-token token 59 function ">toString</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:9"><span class="prism-token token 60 punctuation ">(</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:10"><span class="prism-token token 61 punctuation ">)</span></span><span data-offset-key="58980410161b493b99c520c8aeaac508:11"><span class="prism-token token 62 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="c8d0c6f6e42c4cb4bba5def183104b84"><span data-key="5fd84462bc1c402db026ba69d6111b9d"><span data-offset-key="5fd84462bc1c402db026ba69d6111b9d:0"><span class="prism-token token 63">    </span></span><span data-offset-key="5fd84462bc1c402db026ba69d6111b9d:1"><span class="prism-token token 64 punctuation ">}</span></span></span></div><div class="codeLine-a3169fbc" data-key="cbb4aa2bc5cd4f9a99827e7263251124"><span data-key="3353f69b17b94584b723f4bad4981282"><span data-offset-key="3353f69b17b94584b723f4bad4981282:0"><span class="prism-token token 65">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="4af9380af723416eae80318f98749754"><span data-key="42e9bf4572c9428f8a456f10ab654b5f"><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:0"><span class="prism-token token 65">    </span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:1"><span class="prism-token token 66 keyword ">if</span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:2"><span class="prism-token token 67"> </span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:3"><span class="prism-token token 68 punctuation ">(</span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:4"><span class="prism-token token 69">cipherParams</span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:5"><span class="prism-token token 70 punctuation ">.</span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:6"><span class="prism-token token 71">salt</span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:7"><span class="prism-token token 72 punctuation ">)</span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:8"><span class="prism-token token 73"> </span></span><span data-offset-key="42e9bf4572c9428f8a456f10ab654b5f:9"><span class="prism-token token 74 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="f6e7708874cc4c4ba19a49f4a829c495"><span data-key="2f51b5a77fe5400591dfdd5dc2824b0e"><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:0"><span class="prism-token token 75">      jsonObj</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:1"><span class="prism-token token 76 punctuation ">.</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:2"><span class="prism-token token 77">s </span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:3"><span class="prism-token token 78 operator ">=</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:4"><span class="prism-token token 79"> cipherParams</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:5"><span class="prism-token token 80 punctuation ">.</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:6"><span class="prism-token token 81">salt</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:7"><span class="prism-token token 82 punctuation ">.</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:8"><span class="prism-token token 83 function ">toString</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:9"><span class="prism-token token 84 punctuation ">(</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:10"><span class="prism-token token 85 punctuation ">)</span></span><span data-offset-key="2f51b5a77fe5400591dfdd5dc2824b0e:11"><span class="prism-token token 86 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="33c3f0021bb540ceb1d268939ee07581"><span data-key="ca7c21615ffb4af68b66752ab53292ac"><span data-offset-key="ca7c21615ffb4af68b66752ab53292ac:0"><span class="prism-token token 87">    </span></span><span data-offset-key="ca7c21615ffb4af68b66752ab53292ac:1"><span class="prism-token token 88 punctuation ">}</span></span></span></div><div class="codeLine-a3169fbc" data-key="717866f313b348ae81b710777dda4de9"><span data-key="bdf9c9104edf429a89b7344bad08adf5"><span data-offset-key="bdf9c9104edf429a89b7344bad08adf5:0"><span class="prism-token token 89">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="743452bc588f4747ad592f85c181ac17"><span data-key="fe8250524e4a4add9e218311b63dffe4"><span data-offset-key="fe8250524e4a4add9e218311b63dffe4:0"><span class="prism-token token 89">    </span></span><span data-offset-key="fe8250524e4a4add9e218311b63dffe4:1"><span class="prism-token token 90 comment ">// stringify json object</span></span></span></div><div class="codeLine-a3169fbc" data-key="ab2ec1a3797e4b4cb74bc6d736a4fb17"><span data-key="f5a1cc47610e4ea49f8b38a66777b7ea"><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:0"><span class="prism-token token 91">    </span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:1"><span class="prism-token token 92 keyword ">return</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:2"><span class="prism-token token 93"> </span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:3"><span class="prism-token token 94 constant ">JSON</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:4"><span class="prism-token token 95 punctuation ">.</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:5"><span class="prism-token token 96 function ">stringify</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:6"><span class="prism-token token 97 punctuation ">(</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:7"><span class="prism-token token 98">jsonObj</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:8"><span class="prism-token token 99 punctuation ">)</span></span><span data-offset-key="f5a1cc47610e4ea49f8b38a66777b7ea:9"><span class="prism-token token 100 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="f609a79e3f0a48268efab4b3eaec6a80"><span data-key="1735f49273ad484a9c48ff4503efad45"><span data-offset-key="1735f49273ad484a9c48ff4503efad45:0"><span class="prism-token token 101">  </span></span><span data-offset-key="1735f49273ad484a9c48ff4503efad45:1"><span class="prism-token token 102 punctuation ">}</span></span><span data-offset-key="1735f49273ad484a9c48ff4503efad45:2"><span class="prism-token token 103 punctuation ">,</span></span></span></div><div class="codeLine-a3169fbc" data-key="ba7eb8d3b4a54bbbbf39098f3d7590fe"><span data-key="587fccda49e1409bba68f244fff74ed6"><span data-offset-key="587fccda49e1409bba68f244fff74ed6:0"><span class="prism-token token 104">  parse</span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:1"><span class="prism-token token 105 punctuation ">:</span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:2"><span class="prism-token token 106"> </span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:3"><span class="prism-token token 107 keyword ">function</span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:4"><span class="prism-token token 108 punctuation ">(</span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:5"><span class="prism-token token 109">jsonStr</span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:6"><span class="prism-token token 110 punctuation ">)</span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:7"><span class="prism-token token 111"> </span></span><span data-offset-key="587fccda49e1409bba68f244fff74ed6:8"><span class="prism-token token 112 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="1b4e7def655b462dabcdb3900aeefee1"><span data-key="ed64dfa109044975a5d5b4e21b039e16"><span data-offset-key="ed64dfa109044975a5d5b4e21b039e16:0"><span class="prism-token token 113">    </span></span><span data-offset-key="ed64dfa109044975a5d5b4e21b039e16:1"><span class="prism-token token 114 comment ">// parse json string</span></span></span></div><div class="codeLine-a3169fbc" data-key="9d124ef811b1422cbca4f45acec03417"><span data-key="b44f5ea3a8814d63ab0d0e2bc09a0338"><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:0"><span class="prism-token token 115">    </span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:1"><span class="prism-token token 116 keyword ">var</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:2"><span class="prism-token token 117"> jsonObj </span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:3"><span class="prism-token token 118 operator ">=</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:4"><span class="prism-token token 119"> </span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:5"><span class="prism-token token 120 constant ">JSON</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:6"><span class="prism-token token 121 punctuation ">.</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:7"><span class="prism-token token 122 function ">parse</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:8"><span class="prism-token token 123 punctuation ">(</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:9"><span class="prism-token token 124">jsonStr</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:10"><span class="prism-token token 125 punctuation ">)</span></span><span data-offset-key="b44f5ea3a8814d63ab0d0e2bc09a0338:11"><span class="prism-token token 126 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="1ad272da91c047dab47f66d7e6428a51"><span data-key="072a63c0987848ac9cceea56e9232bfe"><span data-offset-key="072a63c0987848ac9cceea56e9232bfe:0"><span class="prism-token token 127">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="1303d712c618498caa8bb21c07f3a76c"><span data-key="4b71654c07ac4e0984539bca039d8354"><span data-offset-key="4b71654c07ac4e0984539bca039d8354:0"><span class="prism-token token 127">    </span></span><span data-offset-key="4b71654c07ac4e0984539bca039d8354:1"><span class="prism-token token 128 comment ">// extract ciphertext from json object, and create cipher params object</span></span></span></div><div class="codeLine-a3169fbc" data-key="73a7690ee73a42e09692ee56a033ca3e"><span data-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17"><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:0"><span class="prism-token token 129">    </span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:1"><span class="prism-token token 130 keyword ">var</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:2"><span class="prism-token token 131"> cipherParams </span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:3"><span class="prism-token token 132 operator ">=</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:4"><span class="prism-token token 133"> CryptoJS</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:5"><span class="prism-token token 134 punctuation ">.</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:6"><span class="prism-token token 135">lib</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:7"><span class="prism-token token 136 punctuation ">.</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:8"><span class="prism-token token 137">CipherParams</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:9"><span class="prism-token token 138 punctuation ">.</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:10"><span class="prism-token token 139 function ">create</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:11"><span class="prism-token token 140 punctuation ">(</span></span><span data-offset-key="7b6ce7a7e2d94ce6bed3b7b0d3a4bd17:12"><span class="prism-token token 141 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="2b36b0cfc02341a7871694c5d16ff767"><span data-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2"><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:0"><span class="prism-token token 142">      ciphertext</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:1"><span class="prism-token token 143 punctuation ">:</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:2"><span class="prism-token token 144"> CryptoJS</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:3"><span class="prism-token token 145 punctuation ">.</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:4"><span class="prism-token token 146">enc</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:5"><span class="prism-token token 147 punctuation ">.</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:6"><span class="prism-token token 148">Base64</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:7"><span class="prism-token token 149 punctuation ">.</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:8"><span class="prism-token token 150 function ">parse</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:9"><span class="prism-token token 151 punctuation ">(</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:10"><span class="prism-token token 152">jsonObj</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:11"><span class="prism-token token 153 punctuation ">.</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:12"><span class="prism-token token 154">ct</span></span><span data-offset-key="bcf2feb21c5d4a4ebd45ab13ec19f4b2:13"><span class="prism-token token 155 punctuation ">)</span></span></span></div><div class="codeLine-a3169fbc" data-key="ac229bfe44d24a13a05aceb04f2e1491"><span data-key="7dbc39e951d642e99f98d6560700715b"><span data-offset-key="7dbc39e951d642e99f98d6560700715b:0"><span class="prism-token token 156">    </span></span><span data-offset-key="7dbc39e951d642e99f98d6560700715b:1"><span class="prism-token token 157 punctuation ">}</span></span><span data-offset-key="7dbc39e951d642e99f98d6560700715b:2"><span class="prism-token token 158 punctuation ">)</span></span><span data-offset-key="7dbc39e951d642e99f98d6560700715b:3"><span class="prism-token token 159 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="76d3c35067a54bd7a24a18fc27cce72e"><span data-key="18b8a87418c34466ba6bab1ea42ea78e"><span data-offset-key="18b8a87418c34466ba6bab1ea42ea78e:0"><span class="prism-token token 160">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="aa6fc0f49db949a3893ca763a767d9c8"><span data-key="e5f1d38330274b8f975d17a43e4dc03b"><span data-offset-key="e5f1d38330274b8f975d17a43e4dc03b:0"><span class="prism-token token 160">    </span></span><span data-offset-key="e5f1d38330274b8f975d17a43e4dc03b:1"><span class="prism-token token 161 comment ">// optionally extract iv or salt</span></span></span></div><div class="codeLine-a3169fbc" data-key="c44bf01891784189846c7a82cbacd8c5"><span data-key="90b0cf8fdd1d4573afb97566a2e7fbfa"><span data-offset-key="90b0cf8fdd1d4573afb97566a2e7fbfa:0"><span class="prism-token token 162">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="037d12cd35ed4bf79e8c2dd6654ebf03"><span data-key="ff93e1a155464c74ba1d71eb55d79420"><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:0"><span class="prism-token token 162">    </span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:1"><span class="prism-token token 163 keyword ">if</span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:2"><span class="prism-token token 164"> </span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:3"><span class="prism-token token 165 punctuation ">(</span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:4"><span class="prism-token token 166">jsonObj</span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:5"><span class="prism-token token 167 punctuation ">.</span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:6"><span class="prism-token token 168">iv</span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:7"><span class="prism-token token 169 punctuation ">)</span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:8"><span class="prism-token token 170"> </span></span><span data-offset-key="ff93e1a155464c74ba1d71eb55d79420:9"><span class="prism-token token 171 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="e3fff549bb8644dc8ca3e18c32550953"><span data-key="ec7c193ac0d34c8cbcd79a5cc093b762"><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:0"><span class="prism-token token 172">      cipherParams</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:1"><span class="prism-token token 173 punctuation ">.</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:2"><span class="prism-token token 174">iv </span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:3"><span class="prism-token token 175 operator ">=</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:4"><span class="prism-token token 176"> CryptoJS</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:5"><span class="prism-token token 177 punctuation ">.</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:6"><span class="prism-token token 178">enc</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:7"><span class="prism-token token 179 punctuation ">.</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:8"><span class="prism-token token 180">Hex</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:9"><span class="prism-token token 181 punctuation ">.</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:10"><span class="prism-token token 182 function ">parse</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:11"><span class="prism-token token 183 punctuation ">(</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:12"><span class="prism-token token 184">jsonObj</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:13"><span class="prism-token token 185 punctuation ">.</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:14"><span class="prism-token token 186">iv</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:15"><span class="prism-token token 187 punctuation ">)</span></span><span data-offset-key="ec7c193ac0d34c8cbcd79a5cc093b762:16"><span class="prism-token token 188 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="4d6338ac662b492a8531bd5eadb93c33"><span data-key="2280d70ffdb54541b30c77a6cc0176a6"><span data-offset-key="2280d70ffdb54541b30c77a6cc0176a6:0"><span class="prism-token token 189">    </span></span><span data-offset-key="2280d70ffdb54541b30c77a6cc0176a6:1"><span class="prism-token token 190 punctuation ">}</span></span></span></div><div class="codeLine-a3169fbc" data-key="55d4e629c94a438799270f5b0996723a"><span data-key="547c38020b6d451d9d2384ecc5e4b972"><span data-offset-key="547c38020b6d451d9d2384ecc5e4b972:0"><span class="prism-token token 191">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="56e61760c5f343cab2b73daef96e372a"><span data-key="08e1f2e552ec40c7b83416acfa932cfa"><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:0"><span class="prism-token token 191">    </span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:1"><span class="prism-token token 192 keyword ">if</span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:2"><span class="prism-token token 193"> </span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:3"><span class="prism-token token 194 punctuation ">(</span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:4"><span class="prism-token token 195">jsonObj</span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:5"><span class="prism-token token 196 punctuation ">.</span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:6"><span class="prism-token token 197">s</span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:7"><span class="prism-token token 198 punctuation ">)</span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:8"><span class="prism-token token 199"> </span></span><span data-offset-key="08e1f2e552ec40c7b83416acfa932cfa:9"><span class="prism-token token 200 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="b8fd5c4ed6504ade8c7a91cd15a84ad3"><span data-key="5463d5a257c647a18298dfbbd2923d38"><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:0"><span class="prism-token token 201">      cipherParams</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:1"><span class="prism-token token 202 punctuation ">.</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:2"><span class="prism-token token 203">salt </span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:3"><span class="prism-token token 204 operator ">=</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:4"><span class="prism-token token 205"> CryptoJS</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:5"><span class="prism-token token 206 punctuation ">.</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:6"><span class="prism-token token 207">enc</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:7"><span class="prism-token token 208 punctuation ">.</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:8"><span class="prism-token token 209">Hex</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:9"><span class="prism-token token 210 punctuation ">.</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:10"><span class="prism-token token 211 function ">parse</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:11"><span class="prism-token token 212 punctuation ">(</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:12"><span class="prism-token token 213">jsonObj</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:13"><span class="prism-token token 214 punctuation ">.</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:14"><span class="prism-token token 215">s</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:15"><span class="prism-token token 216 punctuation ">)</span></span><span data-offset-key="5463d5a257c647a18298dfbbd2923d38:16"><span class="prism-token token 217 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="79f2343af2d2484793cf4e91495f59e2"><span data-key="1e6969b0169242d38dedcaf51efeee7b"><span data-offset-key="1e6969b0169242d38dedcaf51efeee7b:0"><span class="prism-token token 218">    </span></span><span data-offset-key="1e6969b0169242d38dedcaf51efeee7b:1"><span class="prism-token token 219 punctuation ">}</span></span></span></div><div class="codeLine-a3169fbc" data-key="77d6c5ae88aa4a518d133bf7bdc3162c"><span data-key="088996e457c04560aad5387e5686bf45"><span data-offset-key="088996e457c04560aad5387e5686bf45:0"><span class="prism-token token 220">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="2aeb13881e7944beb61c628997cf6e39"><span data-key="4b53b1c3318a45759af255d343850224"><span data-offset-key="4b53b1c3318a45759af255d343850224:0"><span class="prism-token token 220">    </span></span><span data-offset-key="4b53b1c3318a45759af255d343850224:1"><span class="prism-token token 221 keyword ">return</span></span><span data-offset-key="4b53b1c3318a45759af255d343850224:2"><span class="prism-token token 222"> cipherParams</span></span><span data-offset-key="4b53b1c3318a45759af255d343850224:3"><span class="prism-token token 223 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="1bf95ca942254d32b4e13bbe3a164d21"><span data-key="bf4ca53876774cbf9d28887eb052bf9f"><span data-offset-key="bf4ca53876774cbf9d28887eb052bf9f:0"><span class="prism-token token 224">  </span></span><span data-offset-key="bf4ca53876774cbf9d28887eb052bf9f:1"><span class="prism-token token 225 punctuation ">}</span></span></span></div><div class="codeLine-a3169fbc" data-key="3fa57f1997814891bf8f3be55ee877cd"><span data-key="0939d79e435242139a12e678e19a0504"><span data-offset-key="0939d79e435242139a12e678e19a0504:0"><span class="prism-token token 227 punctuation ">}</span></span><span data-offset-key="0939d79e435242139a12e678e19a0504:1"><span class="prism-token token 228 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="8b86f879b4da45d8a87992720f130ad2"><span data-key="fd06b46463c54ee7a574cab54be9aa19"><span data-offset-key="fd06b46463c54ee7a574cab54be9aa19:0"><span class="prism-token token 229">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="d7b0f811b1264ea18e4e2bf63ef25465"><span data-key="881c37c1bbb34a489f32b4e3c8c6e29b"><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:0"><span class="prism-token token 230 keyword ">var</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:1"><span class="prism-token token 231"> encrypted </span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:2"><span class="prism-token token 232 operator ">=</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:3"><span class="prism-token token 233"> CryptoJS</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:4"><span class="prism-token token 234 punctuation ">.</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:5"><span class="prism-token token 235 constant ">AES</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:6"><span class="prism-token token 236 punctuation ">.</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:7"><span class="prism-token token 237 function ">encrypt</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:8"><span class="prism-token token 238 punctuation ">(</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:9"><span class="prism-token token 239 string ">"Message"</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:10"><span class="prism-token token 240 punctuation ">,</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:11"><span class="prism-token token 241"> </span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:12"><span class="prism-token token 242 string ">"Secret Passphrase"</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:13"><span class="prism-token token 243 punctuation ">,</span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:14"><span class="prism-token token 244"> </span></span><span data-offset-key="881c37c1bbb34a489f32b4e3c8c6e29b:15"><span class="prism-token token 245 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="58fe9deaf0954d86bb9b68f04e1282d6"><span data-key="0ec887db589d4a248f208d3b82119c48"><span data-offset-key="0ec887db589d4a248f208d3b82119c48:0"><span class="prism-token token 246">  format</span></span><span data-offset-key="0ec887db589d4a248f208d3b82119c48:1"><span class="prism-token token 247 punctuation ">:</span></span><span data-offset-key="0ec887db589d4a248f208d3b82119c48:2"><span class="prism-token token 248"> JsonFormatter</span></span></span></div><div class="codeLine-a3169fbc" data-key="e073b0a178434c469d046057a8db1880"><span data-key="b791716af90942d5961e9bef9e18e016"><span data-offset-key="b791716af90942d5961e9bef9e18e016:0"><span class="prism-token token 249 punctuation ">}</span></span><span data-offset-key="b791716af90942d5961e9bef9e18e016:1"><span class="prism-token token 250 punctuation ">)</span></span><span data-offset-key="b791716af90942d5961e9bef9e18e016:2"><span class="prism-token token 251 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="e3afefad17c04e5c9e9ffa6f07cd6246"><span data-key="f4b318da46e94656a0f1ef3a329e3a8c"><span data-offset-key="f4b318da46e94656a0f1ef3a329e3a8c:0"><span class="prism-token token 252">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="4881a956751c4c4cb4f10f720cd1bdc0"><span data-key="b318869f427a43ad87562990e478fc53"><span data-offset-key="b318869f427a43ad87562990e478fc53:0"><span class="prism-token token 252">encrypted</span></span></span></div><div class="codeLine-a3169fbc" data-key="a784b4cd49f2479987554397b721fe52"><span data-key="7f23d7ba6d694030a069bea75c2b1330"><span data-offset-key="7f23d7ba6d694030a069bea75c2b1330:0"><span class="prism-token token 253 operator ">&gt;</span></span><span data-offset-key="7f23d7ba6d694030a069bea75c2b1330:1"><span class="prism-token token 254"> </span></span><span data-offset-key="7f23d7ba6d694030a069bea75c2b1330:2"><span class="prism-token token 255 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="40a9a84fdd4a4aa58315ee3e803c2351"><span data-key="d4f583a9cb4d466e98e87a93cc8b84a9"><span data-offset-key="d4f583a9cb4d466e98e87a93cc8b84a9:0"><span class="prism-token token 256">    ct</span></span><span data-offset-key="d4f583a9cb4d466e98e87a93cc8b84a9:1"><span class="prism-token token 257 punctuation ">:</span></span><span data-offset-key="d4f583a9cb4d466e98e87a93cc8b84a9:2"><span class="prism-token token 258"> </span></span><span data-offset-key="d4f583a9cb4d466e98e87a93cc8b84a9:3"><span class="prism-token token 259 string ">"tZ4MsEnfbcDOwqau68aOrQ=="</span></span><span data-offset-key="d4f583a9cb4d466e98e87a93cc8b84a9:4"><span class="prism-token token 260 punctuation ">,</span></span></span></div><div class="codeLine-a3169fbc" data-key="5eaea33762154a648b34687215279fe9"><span data-key="ee0e70ee19ea4d8f9e6890ba3627b97a"><span data-offset-key="ee0e70ee19ea4d8f9e6890ba3627b97a:0"><span class="prism-token token 261">    iv</span></span><span data-offset-key="ee0e70ee19ea4d8f9e6890ba3627b97a:1"><span class="prism-token token 262 punctuation ">:</span></span><span data-offset-key="ee0e70ee19ea4d8f9e6890ba3627b97a:2"><span class="prism-token token 263"> </span></span><span data-offset-key="ee0e70ee19ea4d8f9e6890ba3627b97a:3"><span class="prism-token token 264 string ">"8a8c8fd8fe33743d3638737ea4a00698"</span></span><span data-offset-key="ee0e70ee19ea4d8f9e6890ba3627b97a:4"><span class="prism-token token 265 punctuation ">,</span></span></span></div><div class="codeLine-a3169fbc" data-key="1a8f1c3516d74e9c88a600958d103b13"><span data-key="e1f8ace8535848c1b041cbd4df36c9f8"><span data-offset-key="e1f8ace8535848c1b041cbd4df36c9f8:0"><span class="prism-token token 266">    s</span></span><span data-offset-key="e1f8ace8535848c1b041cbd4df36c9f8:1"><span class="prism-token token 267 punctuation ">:</span></span><span data-offset-key="e1f8ace8535848c1b041cbd4df36c9f8:2"><span class="prism-token token 268"> </span></span><span data-offset-key="e1f8ace8535848c1b041cbd4df36c9f8:3"><span class="prism-token token 269 string ">"ba06373c8f57179c"</span></span></span></div><div class="codeLine-a3169fbc" data-key="1d6c04b3a80a4acfa6b0d9d9bdd17116"><span data-key="42877c2a96044d74bdd6e02777bd0011"><span data-offset-key="42877c2a96044d74bdd6e02777bd0011:0"><span class="prism-token token 270">  </span></span><span data-offset-key="42877c2a96044d74bdd6e02777bd0011:1"><span class="prism-token token 271 punctuation ">}</span></span><span data-offset-key="42877c2a96044d74bdd6e02777bd0011:2"><span class="prism-token token 272 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="25db9acf80a04d4fa2c598670ac41156"><span data-key="f58cce55dd5b49e0878e82914d637d2f"><span data-offset-key="f58cce55dd5b49e0878e82914d637d2f:0"><span class="prism-token token 273">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="5f56794123454b1e898e8bc72b5fe92b"><span data-key="1742dc2419f84f48be92510b9d64c26a"><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:0"><span class="prism-token token 274 keyword ">var</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:1"><span class="prism-token token 275"> decrypted </span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:2"><span class="prism-token token 276 operator ">=</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:3"><span class="prism-token token 277"> CryptoJS</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:4"><span class="prism-token token 278 punctuation ">.</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:5"><span class="prism-token token 279 constant ">AES</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:6"><span class="prism-token token 280 punctuation ">.</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:7"><span class="prism-token token 281 function ">decrypt</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:8"><span class="prism-token token 282 punctuation ">(</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:9"><span class="prism-token token 283">encrypted</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:10"><span class="prism-token token 284 punctuation ">,</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:11"><span class="prism-token token 285"> </span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:12"><span class="prism-token token 286 string ">"Secret Passphrase"</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:13"><span class="prism-token token 287 punctuation ">,</span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:14"><span class="prism-token token 288"> </span></span><span data-offset-key="1742dc2419f84f48be92510b9d64c26a:15"><span class="prism-token token 289 punctuation ">{</span></span></span></div><div class="codeLine-a3169fbc" data-key="66b7f8b9dfc24cafa53ca8247445cb67"><span data-key="e32b187dfaf940b0af3c793e912eb4ba"><span data-offset-key="e32b187dfaf940b0af3c793e912eb4ba:0"><span class="prism-token token 290">  format</span></span><span data-offset-key="e32b187dfaf940b0af3c793e912eb4ba:1"><span class="prism-token token 291 punctuation ">:</span></span><span data-offset-key="e32b187dfaf940b0af3c793e912eb4ba:2"><span class="prism-token token 292"> JsonFormatter</span></span></span></div><div class="codeLine-a3169fbc" data-key="cb99a3e0de1e4bba8363ee5bf730100b"><span data-key="2f0164e10263477cb07fac8a3139b701"><span data-offset-key="2f0164e10263477cb07fac8a3139b701:0"><span class="prism-token token 293 punctuation ">}</span></span><span data-offset-key="2f0164e10263477cb07fac8a3139b701:1"><span class="prism-token token 294 punctuation ">)</span></span><span data-offset-key="2f0164e10263477cb07fac8a3139b701:2"><span class="prism-token token 295 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="6db323b4a69240acbf8fcb451ab652ae"><span data-key="41afe43551f24a6ba8da7e1081fcc62e"><span data-offset-key="41afe43551f24a6ba8da7e1081fcc62e:0"><span class="prism-token token 296">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="3a33687546a74bcda1cc237f2d5bcc20"><span data-key="8ab52e22a0c3436b8f29e69f19f51321"><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:0"><span class="prism-token token 296">decrypted</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:1"><span class="prism-token token 297 punctuation ">.</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:2"><span class="prism-token token 298 function ">toString</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:3"><span class="prism-token token 299 punctuation ">(</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:4"><span class="prism-token token 300">CryptoJS</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:5"><span class="prism-token token 301 punctuation ">.</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:6"><span class="prism-token token 302">enc</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:7"><span class="prism-token token 303 punctuation ">.</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:8"><span class="prism-token token 304">Utf8</span></span><span data-offset-key="8ab52e22a0c3436b8f29e69f19f51321:9"><span class="prism-token token 305 punctuation ">)</span></span></span></div><div class="codeLine-a3169fbc" data-key="e031ee945fc7465da1c7db9affa599f6"><span data-key="f90c62bd1b844e23bb5c9df80022b945"><span data-offset-key="f90c62bd1b844e23bb5c9df80022b945:0"><span class="prism-token token 307 operator ">&gt;</span></span><span data-offset-key="f90c62bd1b844e23bb5c9df80022b945:1"><span class="prism-token token 308"> </span></span><span data-offset-key="f90c62bd1b844e23bb5c9df80022b945:2"><span class="prism-token token 309 string ">"Message"</span></span><span data-offset-key="f90c62bd1b844e23bb5c9df80022b945:3"><span class="prism-token token 310 punctuation ">;</span></span></span></div></pre></div><h3 id="progressive-ciphering" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="44f51d17a1b34a65b71f41ff4bbe6840"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="60ecc7ae0d014a73892df11af9fe293d"><span data-offset-key="60ecc7ae0d014a73892df11af9fe293d:0">Progressive Ciphering</span></span></span><a href="https://cryptojs.gitbook.io/docs/#progressive-ciphering" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="8b59bfe0917f418e835c40a62688a10b" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="723aa269d4ee434a87fe7e70e0b1a63b"><span data-key="dd8c65945c5148f6a60a1a6ba08f279e"><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:1"><span class="prism-token token 1"> key </span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:5"><span class="prism-token token 5">enc</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:7"><span class="prism-token token 7">Hex</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:8"><span class="prism-token token 8 punctuation ">.</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:9"><span class="prism-token token 9 function ">parse</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:10"><span class="prism-token token 10 punctuation ">(</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:11"><span class="prism-token token 11 string ">"000102030405060708090a0b0c0d0e0f"</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:12"><span class="prism-token token 12 punctuation ">)</span></span><span data-offset-key="dd8c65945c5148f6a60a1a6ba08f279e:13"><span class="prism-token token 13 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="9ee5f545d2d143958e2f1a5f4e963e91"><span data-key="c73e4f843ef345a5aaf116503fc993cd"><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:0"><span class="prism-token token 15 keyword ">var</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:1"><span class="prism-token token 16"> iv </span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:2"><span class="prism-token token 17 operator ">=</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:3"><span class="prism-token token 18"> CryptoJS</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:4"><span class="prism-token token 19 punctuation ">.</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:5"><span class="prism-token token 20">enc</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:6"><span class="prism-token token 21 punctuation ">.</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:7"><span class="prism-token token 22">Hex</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:8"><span class="prism-token token 23 punctuation ">.</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:9"><span class="prism-token token 24 function ">parse</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:10"><span class="prism-token token 25 punctuation ">(</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:11"><span class="prism-token token 26 string ">"101112131415161718191a1b1c1d1e1f"</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:12"><span class="prism-token token 27 punctuation ">)</span></span><span data-offset-key="c73e4f843ef345a5aaf116503fc993cd:13"><span class="prism-token token 28 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="c7e68742e6c04d448f24e6704b3442e4"><span data-key="40b944f3f085437892d366336a9e0ebe"><span data-offset-key="40b944f3f085437892d366336a9e0ebe:0"><span class="prism-token token 29">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="dad74715f7c94a898b48d4cba62abd8c"><span data-key="45f3048c099b45e69bae08013f03ee9a"><span data-offset-key="45f3048c099b45e69bae08013f03ee9a:0"><span class="prism-token token 30 comment ">// encrypt</span></span></span></div><div class="codeLine-a3169fbc" data-key="154790dd7d474d88a9613a5b65255ce4"><span data-key="6a60bdbf2412432192d9cc5333302013"><span data-offset-key="6a60bdbf2412432192d9cc5333302013:0"><span class="prism-token token 32 keyword ">var</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:1"><span class="prism-token token 33"> aesEncryptor </span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:2"><span class="prism-token token 34 operator ">=</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:3"><span class="prism-token token 35"> CryptoJS</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:4"><span class="prism-token token 36 punctuation ">.</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:5"><span class="prism-token token 37">algo</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:6"><span class="prism-token token 38 punctuation ">.</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:7"><span class="prism-token token 39 constant ">AES</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:8"><span class="prism-token token 40 punctuation ">.</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:9"><span class="prism-token token 41 function ">createEncryptor</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:10"><span class="prism-token token 42 punctuation ">(</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:11"><span class="prism-token token 43">key</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:12"><span class="prism-token token 44 punctuation ">,</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:13"><span class="prism-token token 45"> </span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:14"><span class="prism-token token 46 punctuation ">{</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:15"><span class="prism-token token 47"> iv</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:16"><span class="prism-token token 48 punctuation ">:</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:17"><span class="prism-token token 49"> iv </span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:18"><span class="prism-token token 50 punctuation ">}</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:19"><span class="prism-token token 51 punctuation ">)</span></span><span data-offset-key="6a60bdbf2412432192d9cc5333302013:20"><span class="prism-token token 52 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="522da6ec47e34c00813a247c64bcd038"><span data-key="d830a1ed19eb4320a9e4dd0afdacb3f8"><span data-offset-key="d830a1ed19eb4320a9e4dd0afdacb3f8:0"><span class="prism-token token 53">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="68ac220cc5c54088a45538cc53209698"><span data-key="cde83bc7998249399fb5783b019ebfb7"><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:0"><span class="prism-token token 54 keyword ">var</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:1"><span class="prism-token token 55"> ciphertextPart1 </span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:2"><span class="prism-token token 56 operator ">=</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:3"><span class="prism-token token 57"> aesEncryptor</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:4"><span class="prism-token token 58 punctuation ">.</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:5"><span class="prism-token token 59 function ">process</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:6"><span class="prism-token token 60 punctuation ">(</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:7"><span class="prism-token token 61 string ">"Message Part 1"</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:8"><span class="prism-token token 62 punctuation ">)</span></span><span data-offset-key="cde83bc7998249399fb5783b019ebfb7:9"><span class="prism-token token 63 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="661d92078ae24a12b72c7ef44e7e217a"><span data-key="a2b90d1c146640bb8758ad5c15522d03"><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:0"><span class="prism-token token 65 keyword ">var</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:1"><span class="prism-token token 66"> ciphertextPart2 </span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:2"><span class="prism-token token 67 operator ">=</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:3"><span class="prism-token token 68"> aesEncryptor</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:4"><span class="prism-token token 69 punctuation ">.</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:5"><span class="prism-token token 70 function ">process</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:6"><span class="prism-token token 71 punctuation ">(</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:7"><span class="prism-token token 72 string ">"Message Part 2"</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:8"><span class="prism-token token 73 punctuation ">)</span></span><span data-offset-key="a2b90d1c146640bb8758ad5c15522d03:9"><span class="prism-token token 74 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="03a0fa9c0359481e8267f6573630cd82"><span data-key="581069e18fe84710ac941dc9dba16004"><span data-offset-key="581069e18fe84710ac941dc9dba16004:0"><span class="prism-token token 76 keyword ">var</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:1"><span class="prism-token token 77"> ciphertextPart3 </span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:2"><span class="prism-token token 78 operator ">=</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:3"><span class="prism-token token 79"> aesEncryptor</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:4"><span class="prism-token token 80 punctuation ">.</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:5"><span class="prism-token token 81 function ">process</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:6"><span class="prism-token token 82 punctuation ">(</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:7"><span class="prism-token token 83 string ">"Message Part 3"</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:8"><span class="prism-token token 84 punctuation ">)</span></span><span data-offset-key="581069e18fe84710ac941dc9dba16004:9"><span class="prism-token token 85 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="60c9759e0fee42428896c9e9ce1215ab"><span data-key="32949d89a3d2411a99f1d3b4f2005a6f"><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:0"><span class="prism-token token 87 keyword ">var</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:1"><span class="prism-token token 88"> ciphertextPart4 </span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:2"><span class="prism-token token 89 operator ">=</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:3"><span class="prism-token token 90"> aesEncryptor</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:4"><span class="prism-token token 91 punctuation ">.</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:5"><span class="prism-token token 92 function ">finalize</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:6"><span class="prism-token token 93 punctuation ">(</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:7"><span class="prism-token token 94 punctuation ">)</span></span><span data-offset-key="32949d89a3d2411a99f1d3b4f2005a6f:8"><span class="prism-token token 95 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="091151b91ab14c4abb7c5e8381573670"><span data-key="3d184fb54a964beda82de5ccd1c3c3b6"><span data-offset-key="3d184fb54a964beda82de5ccd1c3c3b6:0"><span class="prism-token token 96">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="1397485b302548209cc2f08cd1601c54"><span data-key="fb49558452e94eda8bd303e177791b6b"><span data-offset-key="fb49558452e94eda8bd303e177791b6b:0"><span class="prism-token token 97 comment ">// decrypt</span></span></span></div><div class="codeLine-a3169fbc" data-key="e6824306424a493c9fe160dab9323a9a"><span data-key="1e0c31caa40f404c83dd042db9ca72d4"><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:0"><span class="prism-token token 99 keyword ">var</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:1"><span class="prism-token token 100"> aesDecryptor </span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:2"><span class="prism-token token 101 operator ">=</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:3"><span class="prism-token token 102"> CryptoJS</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:4"><span class="prism-token token 103 punctuation ">.</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:5"><span class="prism-token token 104">algo</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:6"><span class="prism-token token 105 punctuation ">.</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:7"><span class="prism-token token 106 constant ">AES</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:8"><span class="prism-token token 107 punctuation ">.</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:9"><span class="prism-token token 108 function ">createDecryptor</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:10"><span class="prism-token token 109 punctuation ">(</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:11"><span class="prism-token token 110">key</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:12"><span class="prism-token token 111 punctuation ">,</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:13"><span class="prism-token token 112"> </span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:14"><span class="prism-token token 113 punctuation ">{</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:15"><span class="prism-token token 114"> iv</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:16"><span class="prism-token token 115 punctuation ">:</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:17"><span class="prism-token token 116"> iv </span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:18"><span class="prism-token token 117 punctuation ">}</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:19"><span class="prism-token token 118 punctuation ">)</span></span><span data-offset-key="1e0c31caa40f404c83dd042db9ca72d4:20"><span class="prism-token token 119 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="ff284c1a0ee440ff86b4dd8c4aec9627"><span data-key="01b2150bd78941eab6281c9548fd8d76"><span data-offset-key="01b2150bd78941eab6281c9548fd8d76:0"><span class="prism-token token 120">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="3452c07e717047419bac2a53e2bdbb2c"><span data-key="e8092ece500848a283e1181691c82a1a"><span data-offset-key="e8092ece500848a283e1181691c82a1a:0"><span class="prism-token token 121 keyword ">var</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:1"><span class="prism-token token 122"> plaintextPart1 </span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:2"><span class="prism-token token 123 operator ">=</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:3"><span class="prism-token token 124"> aesDecryptor</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:4"><span class="prism-token token 125 punctuation ">.</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:5"><span class="prism-token token 126 function ">process</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:6"><span class="prism-token token 127 punctuation ">(</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:7"><span class="prism-token token 128">ciphertextPart1</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:8"><span class="prism-token token 129 punctuation ">)</span></span><span data-offset-key="e8092ece500848a283e1181691c82a1a:9"><span class="prism-token token 130 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="18838b4f72944811b545795cc0dff07a"><span data-key="9eee2d741f7844e39fe856b645bb3cd3"><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:0"><span class="prism-token token 132 keyword ">var</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:1"><span class="prism-token token 133"> plaintextPart2 </span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:2"><span class="prism-token token 134 operator ">=</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:3"><span class="prism-token token 135"> aesDecryptor</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:4"><span class="prism-token token 136 punctuation ">.</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:5"><span class="prism-token token 137 function ">process</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:6"><span class="prism-token token 138 punctuation ">(</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:7"><span class="prism-token token 139">ciphertextPart2</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:8"><span class="prism-token token 140 punctuation ">)</span></span><span data-offset-key="9eee2d741f7844e39fe856b645bb3cd3:9"><span class="prism-token token 141 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="f948e391f0f14ac0b88917248c16329e"><span data-key="76737148a6d14d5bbd2e7033be125d71"><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:0"><span class="prism-token token 143 keyword ">var</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:1"><span class="prism-token token 144"> plaintextPart3 </span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:2"><span class="prism-token token 145 operator ">=</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:3"><span class="prism-token token 146"> aesDecryptor</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:4"><span class="prism-token token 147 punctuation ">.</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:5"><span class="prism-token token 148 function ">process</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:6"><span class="prism-token token 149 punctuation ">(</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:7"><span class="prism-token token 150">ciphertextPart3</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:8"><span class="prism-token token 151 punctuation ">)</span></span><span data-offset-key="76737148a6d14d5bbd2e7033be125d71:9"><span class="prism-token token 152 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="0c9e6f925403443c82893df4ce1b64ce"><span data-key="30476f8b0f724ed1a212ddd409d17399"><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:0"><span class="prism-token token 154 keyword ">var</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:1"><span class="prism-token token 155"> plaintextPart4 </span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:2"><span class="prism-token token 156 operator ">=</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:3"><span class="prism-token token 157"> aesDecryptor</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:4"><span class="prism-token token 158 punctuation ">.</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:5"><span class="prism-token token 159 function ">process</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:6"><span class="prism-token token 160 punctuation ">(</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:7"><span class="prism-token token 161">ciphertextPart4</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:8"><span class="prism-token token 162 punctuation ">)</span></span><span data-offset-key="30476f8b0f724ed1a212ddd409d17399:9"><span class="prism-token token 163 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="470c30a2f7c742299ac9f5d23b2d12d6"><span data-key="194aff265e934342b2f923a6324a5e95"><span data-offset-key="194aff265e934342b2f923a6324a5e95:0"><span class="prism-token token 165 keyword ">var</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:1"><span class="prism-token token 166"> plaintextPart5 </span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:2"><span class="prism-token token 167 operator ">=</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:3"><span class="prism-token token 168"> aesDecryptor</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:4"><span class="prism-token token 169 punctuation ">.</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:5"><span class="prism-token token 170 function ">finalize</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:6"><span class="prism-token token 171 punctuation ">(</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:7"><span class="prism-token token 172 punctuation ">)</span></span><span data-offset-key="194aff265e934342b2f923a6324a5e95:8"><span class="prism-token token 173 punctuation ">;</span></span></span></div></pre></div><h3 id="interoperability" class="blockHeading-442b4f12--blockHeading3WithMargin-532d7700" data-key="193842d6a3034e9a9a085e5cc7b06411"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH400-686c0942--textContentFamily-49a318e1"><span data-key="b6479cc58a3e4343b92a52d0e0839778"><span data-offset-key="b6479cc58a3e4343b92a52d0e0839778:0">Interoperability</span></span></span><a href="https://cryptojs.gitbook.io/docs/#interoperability" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h3><p class="blockParagraph-544a408c" data-key="58dd0f44dc804373905cabcbcf4a1134"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="da673cb3d36e4ff3af188e4007e50bf6"><span data-offset-key="da673cb3d36e4ff3af188e4007e50bf6:0">With OpenSSL</span></span></span></p><p class="blockParagraph-544a408c" data-key="2f33b3e3e84f4f5d9f3c4d6d3550a2c0"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="763306d72bba483bb29d4cd441ea39c5"><span data-offset-key="763306d72bba483bb29d4cd441ea39c5:0">Encrypt with OpenSSL:</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="2c0edbabbf5b4e1ab8f1986971a99348" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="1a1296d9ae2449a5996eab434be73826"><span data-key="496a83d9394a4ba7bfda7bc64f5e61f0"><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:0">openssl enc </span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:1"><span class="prism-token token 1 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:2"><span class="prism-token token 2">aes</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:3"><span class="prism-token token 3 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:4"><span class="prism-token token 4 number ">256</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:5"><span class="prism-token token 5 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:6"><span class="prism-token token 6">cbc </span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:7"><span class="prism-token token 7 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:8"><span class="prism-token token 8 keyword ">in</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:9"><span class="prism-token token 9"> infile </span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:10"><span class="prism-token token 10 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:11"><span class="prism-token token 11">out outfile </span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:12"><span class="prism-token token 12 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:13"><span class="prism-token token 13">pass pass</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:14"><span class="prism-token token 14 punctuation ">:</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:15"><span class="prism-token token 15 string ">"Secret Passphrase"</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:16"><span class="prism-token token 16"> </span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:17"><span class="prism-token token 17 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:18"><span class="prism-token token 18">e </span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:19"><span class="prism-token token 19 operator ">-</span></span><span data-offset-key="496a83d9394a4ba7bfda7bc64f5e61f0:20"><span class="prism-token token 20">base64</span></span></span></div></pre></div><p class="blockParagraph-544a408c" data-key="9e9ead64b4cb4f76b1ce7ae8601d2533"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="dba6c79730f74519b76f2ca5cd0242d2"><span data-offset-key="dba6c79730f74519b76f2ca5cd0242d2:0">Decrypt with CryptoJS:</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="fec12070b07f44ea91cd4b1fd35215b8" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="99b8b421c8454dba9e8366c53367bd5e"><span data-key="37ce169cdfb34eb2b563c306bcca975d"><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:1"><span class="prism-token token 1"> decrypted </span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:5"><span class="prism-token token 5 constant ">AES</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:7"><span class="prism-token token 7 function ">decrypt</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:8"><span class="prism-token token 8 punctuation ">(</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:9"><span class="prism-token token 9">openSSLEncrypted</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:10"><span class="prism-token token 10 punctuation ">,</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:11"><span class="prism-token token 11"> </span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:12"><span class="prism-token token 12 string ">"Secret Passphrase"</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:13"><span class="prism-token token 13 punctuation ">)</span></span><span data-offset-key="37ce169cdfb34eb2b563c306bcca975d:14"><span class="prism-token token 14 punctuation ">;</span></span></span></div></pre></div><h2 id="encoders" class="blockHeading-442b4f12--blockHeading2WithMargin-532d771d" data-key="eb674edb3e33496abc3664e5175525d6"><div class="blockHeadingContent-756c9114"><span class="text-4505230f--HeadingH600-23f228db--textContentFamily-49a318e1"><span data-key="a3ccf4bcb4da41029018902c79b6740b"><span data-offset-key="a3ccf4bcb4da41029018902c79b6740b:0">Encoders</span></span></span><a href="https://cryptojs.gitbook.io/docs/#encoders" contenteditable="false" class="blockHeadingAnchor-34f75d78--blockHeadingAnchorHidden-d69b5eda"><span class="blockHeadingAnchorIcon-1c2bf3cb"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></g></svg></span></a></div></h2><p class="blockParagraph-544a408c" data-key="82b2dfcad61c401790c5d5126c429eff"><span class="text-4505230f--TextH400-3033861f--textContentFamily-49a318e1"><span data-key="9e15f09aee5949558c79f1c597f5d126"><span data-offset-key="9e15f09aee5949558c79f1c597f5d126:0">CryptoJS can convert from encoding formats such as Base64, Latin1 or Hex to WordArray objects and vice-versa.</span></span></span></p><div class="reset-3c756112--codeBlockWrapper-56f27afc"><div contenteditable="false" class="reset-3c756112--copyButtonWrapper-ca591f6e"><div aria-label="Copy" role="button" tabindex="0" class="reset-3c756112--touchableView-a079aa82--copyButton-4f9a9412--tooltipped-57ae51fe"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></g></svg></div></div><pre data-key="531d24355a214a71b2e51c92902204b3" spellcheck="false" class="reset-3c756112--codeBlock-75b39b81"><div class="codeLine-a3169fbc" data-key="5e9631fb7e0745c286f7bf1b87c37bb1"><span data-key="00b35b7b80b84fcdab6ee9732ee648a8"><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:0"><span class="prism-token token  keyword ">var</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:1"><span class="prism-token token 1"> words </span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:2"><span class="prism-token token 2 operator ">=</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:3"><span class="prism-token token 3"> CryptoJS</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:4"><span class="prism-token token 4 punctuation ">.</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:5"><span class="prism-token token 5">enc</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:6"><span class="prism-token token 6 punctuation ">.</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:7"><span class="prism-token token 7">Base64</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:8"><span class="prism-token token 8 punctuation ">.</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:9"><span class="prism-token token 9 function ">parse</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:10"><span class="prism-token token 10 punctuation ">(</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:11"><span class="prism-token token 11 string ">"SGVsbG8sIFdvcmxkIQ=="</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:12"><span class="prism-token token 12 punctuation ">)</span></span><span data-offset-key="00b35b7b80b84fcdab6ee9732ee648a8:13"><span class="prism-token token 13 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="e59c4ea8242a46ea80ec9a21b4111f43"><span data-key="b8c64e3cea354e408e98e6073d75412f"><span data-offset-key="b8c64e3cea354e408e98e6073d75412f:0"><span class="prism-token token 14">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="04bc6933b3914858bda31577a34abf29"><span data-key="ffd00fdf8abd45848e2b7326e65e755b"><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:0"><span class="prism-token token 15 keyword ">var</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:1"><span class="prism-token token 16"> base64 </span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:2"><span class="prism-token token 17 operator ">=</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:3"><span class="prism-token token 18"> CryptoJS</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:4"><span class="prism-token token 19 punctuation ">.</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:5"><span class="prism-token token 20">enc</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:6"><span class="prism-token token 21 punctuation ">.</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:7"><span class="prism-token token 22">Base64</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:8"><span class="prism-token token 23 punctuation ">.</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:9"><span class="prism-token token 24 function ">stringify</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:10"><span class="prism-token token 25 punctuation ">(</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:11"><span class="prism-token token 26">words</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:12"><span class="prism-token token 27 punctuation ">)</span></span><span data-offset-key="ffd00fdf8abd45848e2b7326e65e755b:13"><span class="prism-token token 28 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="37e5782ac45241319254ad1997e9484e"><span data-key="0fe85c6a0a194f498abd10b09ee70cd1"><span data-offset-key="0fe85c6a0a194f498abd10b09ee70cd1:0"><span class="prism-token token 29">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="38dada39b1a34f7ebc7ffda146997a73"><span data-key="680408ce6ab84c37945a4b6bc627f7cc"><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:0"><span class="prism-token token 30 keyword ">var</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:1"><span class="prism-token token 31"> words </span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:2"><span class="prism-token token 32 operator ">=</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:3"><span class="prism-token token 33"> CryptoJS</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:4"><span class="prism-token token 34 punctuation ">.</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:5"><span class="prism-token token 35">enc</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:6"><span class="prism-token token 36 punctuation ">.</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:7"><span class="prism-token token 37">Latin1</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:8"><span class="prism-token token 38 punctuation ">.</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:9"><span class="prism-token token 39 function ">parse</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:10"><span class="prism-token token 40 punctuation ">(</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:11"><span class="prism-token token 41 string ">"Hello, World!"</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:12"><span class="prism-token token 42 punctuation ">)</span></span><span data-offset-key="680408ce6ab84c37945a4b6bc627f7cc:13"><span class="prism-token token 43 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="112195a51b664cbc8f07fe517d6c0cc4"><span data-key="b88d6524d5ad46a38b84bb4afd133a2c"><span data-offset-key="b88d6524d5ad46a38b84bb4afd133a2c:0"><span class="prism-token token 44">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="ea9c218d22ce464aaca7bc801cbd33ec"><span data-key="8c005260ba3f425f8c06568e4c027633"><span data-offset-key="8c005260ba3f425f8c06568e4c027633:0"><span class="prism-token token 45 keyword ">var</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:1"><span class="prism-token token 46"> latin1 </span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:2"><span class="prism-token token 47 operator ">=</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:3"><span class="prism-token token 48"> CryptoJS</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:4"><span class="prism-token token 49 punctuation ">.</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:5"><span class="prism-token token 50">enc</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:6"><span class="prism-token token 51 punctuation ">.</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:7"><span class="prism-token token 52">Latin1</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:8"><span class="prism-token token 53 punctuation ">.</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:9"><span class="prism-token token 54 function ">stringify</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:10"><span class="prism-token token 55 punctuation ">(</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:11"><span class="prism-token token 56">words</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:12"><span class="prism-token token 57 punctuation ">)</span></span><span data-offset-key="8c005260ba3f425f8c06568e4c027633:13"><span class="prism-token token 58 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="85d0077f558343ea93a2cb061244bb80"><span data-key="2adebb5ba30a407f951327016cf02cf0"><span data-offset-key="2adebb5ba30a407f951327016cf02cf0:0"><span class="prism-token token 59">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="7cb30faab4c349d3a52b56c99aa85746"><span data-key="620f2fc6a48a445894963b83153112da"><span data-offset-key="620f2fc6a48a445894963b83153112da:0"><span class="prism-token token 60 keyword ">var</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:1"><span class="prism-token token 61"> words </span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:2"><span class="prism-token token 62 operator ">=</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:3"><span class="prism-token token 63"> CryptoJS</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:4"><span class="prism-token token 64 punctuation ">.</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:5"><span class="prism-token token 65">enc</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:6"><span class="prism-token token 66 punctuation ">.</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:7"><span class="prism-token token 67">Hex</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:8"><span class="prism-token token 68 punctuation ">.</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:9"><span class="prism-token token 69 function ">parse</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:10"><span class="prism-token token 70 punctuation ">(</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:11"><span class="prism-token token 71 string ">"48656c6c6f2c20576f726c6421"</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:12"><span class="prism-token token 72 punctuation ">)</span></span><span data-offset-key="620f2fc6a48a445894963b83153112da:13"><span class="prism-token token 73 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="e44e400a79fe4e118f6b070be0bd7490"><span data-key="bbc64cf2422c4544b7ce62e7dd473d9b"><span data-offset-key="bbc64cf2422c4544b7ce62e7dd473d9b:0"><span class="prism-token token 74">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="76403e1d8b164946a5aab6e5b3328bad"><span data-key="6ceee88ce3704280b4ca4410531f88fe"><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:0"><span class="prism-token token 75 keyword ">var</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:1"><span class="prism-token token 76"> hex </span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:2"><span class="prism-token token 77 operator ">=</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:3"><span class="prism-token token 78"> CryptoJS</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:4"><span class="prism-token token 79 punctuation ">.</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:5"><span class="prism-token token 80">enc</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:6"><span class="prism-token token 81 punctuation ">.</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:7"><span class="prism-token token 82">Hex</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:8"><span class="prism-token token 83 punctuation ">.</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:9"><span class="prism-token token 84 function ">stringify</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:10"><span class="prism-token token 85 punctuation ">(</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:11"><span class="prism-token token 86">words</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:12"><span class="prism-token token 87 punctuation ">)</span></span><span data-offset-key="6ceee88ce3704280b4ca4410531f88fe:13"><span class="prism-token token 88 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="84445eb58f3b404ba6653f8e3badf3ed"><span data-key="46a5c1fe2fa74c9ca775c020ecf19a0d"><span data-offset-key="46a5c1fe2fa74c9ca775c020ecf19a0d:0"><span class="prism-token token 89">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="da3200f650c04d8c982d70bd8e6050cf"><span data-key="bf489790dc7f4b459d3968e43ffe7941"><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:0"><span class="prism-token token 90 keyword ">var</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:1"><span class="prism-token token 91"> words </span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:2"><span class="prism-token token 92 operator ">=</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:3"><span class="prism-token token 93"> CryptoJS</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:4"><span class="prism-token token 94 punctuation ">.</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:5"><span class="prism-token token 95">enc</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:6"><span class="prism-token token 96 punctuation ">.</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:7"><span class="prism-token token 97">Utf8</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:8"><span class="prism-token token 98 punctuation ">.</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:9"><span class="prism-token token 99 function ">parse</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:10"><span class="prism-token token 100 punctuation ">(</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:11"><span class="prism-token token 101 string ">"𔭢"</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:12"><span class="prism-token token 102 punctuation ">)</span></span><span data-offset-key="bf489790dc7f4b459d3968e43ffe7941:13"><span class="prism-token token 103 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="ad6d1efc7c4c41d4912eaff49a40a1b9"><span data-key="48b78f10ef6f41f8b1400d2738588136"><span data-offset-key="48b78f10ef6f41f8b1400d2738588136:0"><span class="prism-token token 104">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="8d6d8c74ed7445e3b67f263e2a65897e"><span data-key="ff2b394c49874fa9afbc081e6a3bff1b"><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:0"><span class="prism-token token 105 keyword ">var</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:1"><span class="prism-token token 106"> utf8 </span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:2"><span class="prism-token token 107 operator ">=</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:3"><span class="prism-token token 108"> CryptoJS</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:4"><span class="prism-token token 109 punctuation ">.</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:5"><span class="prism-token token 110">enc</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:6"><span class="prism-token token 111 punctuation ">.</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:7"><span class="prism-token token 112">Utf8</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:8"><span class="prism-token token 113 punctuation ">.</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:9"><span class="prism-token token 114 function ">stringify</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:10"><span class="prism-token token 115 punctuation ">(</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:11"><span class="prism-token token 116">words</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:12"><span class="prism-token token 117 punctuation ">)</span></span><span data-offset-key="ff2b394c49874fa9afbc081e6a3bff1b:13"><span class="prism-token token 118 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="324399d1fed6407bba357cec0cfb65fe"><span data-key="7030d947236440b0b0afc908f650fa85"><span data-offset-key="7030d947236440b0b0afc908f650fa85:0"><span class="prism-token token 119">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="2b7f330c8e0245f189e68ece2301eb24"><span data-key="86ed16069308449ab62258ade55cfa30"><span data-offset-key="86ed16069308449ab62258ade55cfa30:0"><span class="prism-token token 120 keyword ">var</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:1"><span class="prism-token token 121"> words </span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:2"><span class="prism-token token 122 operator ">=</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:3"><span class="prism-token token 123"> CryptoJS</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:4"><span class="prism-token token 124 punctuation ">.</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:5"><span class="prism-token token 125">enc</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:6"><span class="prism-token token 126 punctuation ">.</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:7"><span class="prism-token token 127">Utf16</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:8"><span class="prism-token token 128 punctuation ">.</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:9"><span class="prism-token token 129 function ">parse</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:10"><span class="prism-token token 130 punctuation ">(</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:11"><span class="prism-token token 131 string ">"Hello, World!"</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:12"><span class="prism-token token 132 punctuation ">)</span></span><span data-offset-key="86ed16069308449ab62258ade55cfa30:13"><span class="prism-token token 133 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="28241f9cf9ca45b0acfe375a8472e7a8"><span data-key="01282839a41149fbb02f5694d2f0ff3a"><span data-offset-key="01282839a41149fbb02f5694d2f0ff3a:0"><span class="prism-token token 134">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="93ac4f76523741f28225e97657b56f0f"><span data-key="4ed4aac32d014b85b41d8e72a2f78f8f"><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:0"><span class="prism-token token 135 keyword ">var</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:1"><span class="prism-token token 136"> utf16 </span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:2"><span class="prism-token token 137 operator ">=</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:3"><span class="prism-token token 138"> CryptoJS</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:4"><span class="prism-token token 139 punctuation ">.</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:5"><span class="prism-token token 140">enc</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:6"><span class="prism-token token 141 punctuation ">.</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:7"><span class="prism-token token 142">Utf16</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:8"><span class="prism-token token 143 punctuation ">.</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:9"><span class="prism-token token 144 function ">stringify</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:10"><span class="prism-token token 145 punctuation ">(</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:11"><span class="prism-token token 146">words</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:12"><span class="prism-token token 147 punctuation ">)</span></span><span data-offset-key="4ed4aac32d014b85b41d8e72a2f78f8f:13"><span class="prism-token token 148 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="8ec168d55e49411ab7ce7d4664bddbe9"><span data-key="69862e116e464a029b4ca9d8b9d93784"><span data-offset-key="69862e116e464a029b4ca9d8b9d93784:0"><span class="prism-token token 149">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="a4d01d5895b8401a98a966678a9a1b4a"><span data-key="5bba4987c350436f8632be4c410be45a"><span data-offset-key="5bba4987c350436f8632be4c410be45a:0"><span class="prism-token token 150 keyword ">var</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:1"><span class="prism-token token 151"> words </span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:2"><span class="prism-token token 152 operator ">=</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:3"><span class="prism-token token 153"> CryptoJS</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:4"><span class="prism-token token 154 punctuation ">.</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:5"><span class="prism-token token 155">enc</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:6"><span class="prism-token token 156 punctuation ">.</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:7"><span class="prism-token token 157">Utf16LE</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:8"><span class="prism-token token 158 punctuation ">.</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:9"><span class="prism-token token 159 function ">parse</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:10"><span class="prism-token token 160 punctuation ">(</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:11"><span class="prism-token token 161 string ">"Hello, World!"</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:12"><span class="prism-token token 162 punctuation ">)</span></span><span data-offset-key="5bba4987c350436f8632be4c410be45a:13"><span class="prism-token token 163 punctuation ">;</span></span></span></div><div class="codeLine-a3169fbc" data-key="7fb618b6be2f4873bfa17d1f5766ca6a"><span data-key="94e0d927d7bc4687937bd60537e46a6e"><span data-offset-key="94e0d927d7bc4687937bd60537e46a6e:0"><span class="prism-token token 164">​</span></span></span></div><div class="codeLine-a3169fbc" data-key="7300ae16c35f427ea63214f5b04fe4d7"><span data-key="f6999668cf2f4df0aff9873a8a6499e9"><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:0"><span class="prism-token token 165 keyword ">var</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:1"><span class="prism-token token 166"> utf16 </span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:2"><span class="prism-token token 167 operator ">=</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:3"><span class="prism-token token 168"> CryptoJS</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:4"><span class="prism-token token 169 punctuation ">.</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:5"><span class="prism-token token 170">enc</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:6"><span class="prism-token token 171 punctuation ">.</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:7"><span class="prism-token token 172">Utf16LE</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:8"><span class="prism-token token 173 punctuation ">.</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:9"><span class="prism-token token 174 function ">stringify</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:10"><span class="prism-token token 175 punctuation ">(</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:11"><span class="prism-token token 176">words</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:12"><span class="prism-token token 177 punctuation ">)</span></span><span data-offset-key="f6999668cf2f4df0aff9873a8a6499e9:13"><span class="prism-token token 178 punctuation ">;</span></span></span></div></pre></div></div></div></div></div><div class="reset-3c756112--pageFooter-f1d5e2b0"><div class="reset-3c756112"><div class="reset-3c756112--navPagesLinks-67bea901--navPagesUnique-5b69cc14"></div></div><div class="reset-3c756112--pageFooterColumns-ef8f347e"><div class="reset-3c756112--pageFooterSummary-12074aff"><div class="reset-3c756112--pageChangesSummary-08821678"><div class="reset-3c756112--pageContributors-5c59582e"><div class="reset-3c756112--ownerAvatarList-696792ce"><div aria-label="Pedro Gomes" class="reset-3c756112--tooltipContainer-7fdb9b70--tooltipped-57ae51fe--bottom-f9ec01b8--small-2ec8ae1a--circle-6c5acd10--ownerAvatarStackListItem-1b188f0f--whiteOutline-6045f802"><div class="reset-3c756112--avatarFrame-2f40cdc9--small-2ec8ae1a--circle-6c5acd10" role="presentation"><img class="image-67b14f24--avatar-1c1d03ec" src="./CryptoJS - CryptoJS_files/photo.jpg"><div class="reset-3c756112--innerShadow-7a3a8651"></div></div></div></div></div><div class="reset-3c756112--pageEditedDate-b805c39a"><span class="text-4505230f--TextH200-a3425406--textContentFamily-49a318e1">Last updated <span>1 year ago</span></span></div></div></div><div class="reset-3c756112--pageRatingSelect-12b621e6"><div class="reset-3c756112--pageRatingSelectTitle-0876a94a"><span class="text-4505230f--InfoH200-3a8a7a86--textContentFamily-49a318e1--greyBase-2c5d8183">Was this page helpful?</span></div><div class="reset-3c756112--pageRatingSelectIcons-32f74724"><span class="reset-3c756112--pageRatingIcon-275e4c89--pageRatingIconPickable-a079aa82--pageRatingSelectIconsItem-74c8677a" role="presentation"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="none" class="icon-7f6730be--text-3f89f380"><g><path d="M9.707 8.707a.993.993 0 0 0 .006-1.396 1.007 1.007 0 0 0-1.408-.03C8.273 7.312 7.519 8 6 8c-1.497 0-2.251-.67-2.303-.717a1 1 0 0 0-1.404 1.424C2.425 8.839 3.653 10 6 10c2.347 0 3.575-1.161 3.707-1.293m12 0a.993.993 0 0 0 .006-1.396 1.006 1.006 0 0 0-1.408-.03C20.273 7.312 19.519 8 18 8c-1.497 0-2.251-.67-2.303-.717a1 1 0 0 0-1.404 1.424C14.425 8.839 15.653 10 18 10c2.347 0 3.575-1.161 3.707-1.293M21.001 19a1 1 0 0 1-.896-.553C20.036 18.314 18.225 15 12 15c-6.225 0-8.036 3.314-8.11 3.456a1.002 1.002 0 0 1-1.344.43.997.997 0 0 1-.441-1.333C2.198 17.367 4.469 13 12 13s9.802 4.367 9.895 4.553A1.001 1.001 0 0 1 21.001 19" fill-rule="evenodd"></path></g></svg></span><span class="reset-3c756112--pageRatingIcon-275e4c89--pageRatingIconPickable-a079aa82--pageRatingSelectIconsItem-74c8677a" role="presentation"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="none" class="icon-7f6730be--text-3f89f380"><g><path d="M10 8a1 1 0 0 0-1-1H3a1 1 0 1 0 0 2h6a1 1 0 0 0 1-1m12 0a1 1 0 0 0-1-1h-6a1 1 0 1 0 0 2h6a1 1 0 0 0 1-1m-1 9H3a1 1 0 1 1 0-2h18a1 1 0 1 1 0 2" fill-rule="evenodd"></path></g></svg></span><span class="reset-3c756112--pageRatingIcon-275e4c89--pageRatingIconPickable-a079aa82--pageRatingSelectIconsItem-74c8677a" role="presentation"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke="none" class="icon-7f6730be--text-3f89f380"><g><path d="M9.707 8.707a.999.999 0 0 0 0-1.414C9.575 7.161 8.347 6 6 6 3.653 6 2.425 7.161 2.293 7.293a.992.992 0 0 0-.005 1.396 1.007 1.007 0 0 0 1.408.029C3.727 8.689 4.481 8 6 8c1.52 0 2.273.689 2.293.707a.997.997 0 0 0 1.414 0m12 0a.999.999 0 0 0 0-1.414C21.575 7.161 20.347 6 18 6c-2.347 0-3.575 1.161-3.707 1.293a.992.992 0 0 0-.005 1.396 1.006 1.006 0 0 0 1.407.029C15.727 8.689 16.481 8 18 8c1.52 0 2.273.689 2.293.707a.997.997 0 0 0 1.414 0M12 19c-7.53 0-9.8-4.367-9.894-4.553a1.001 1.001 0 0 1 1.786-.902C3.974 13.704 5.792 17 12 17c6.226 0 8.037-3.314 8.111-3.456a1.007 1.007 0 0 1 1.344-.43.998.998 0 0 1 .441 1.333C21.802 14.633 19.531 19 12 19" fill-rule="evenodd"></path></g></svg></span></div></div></div></div></div><div class="reset-3c756112--pageSide-ad9fed26"><div class="reset-3c756112--stickyContainer-2bed3a82"><div class="reset-3c756112" style="padding-bottom: 0px;"></div><div class="reset-3c756112--tocWrapper-506ea24c" style="position: relative; max-height: 495px;"><div class="reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--scrollableContainer-756c9114"><div class="reset-3c756112--pageSideSection-542f1fd5"><div class="reset-3c756112--menu-5b8a7448--pageToc-16c35922--pageTocLive-542f1fd5"><div class="reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--menuItems-2e6f017b--pageTocLiveItems-67c61496"><div class="reset-3c756112--menuHeader-342906de--menuHeaderLight-2c5d8183"><div class="reset-3c756112--menuHeaderIcon-0c3ed569"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line></g></svg></div><div class="reset-3c756112"><span class="text-4505230f--InfoH100-1e92e1d1--textContentFamily-49a318e1">Contents</span></div></div><a class="reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024" href="https://cryptojs.gitbook.io/docs/#documentation" style=""><div class="reset-3c756112--menuItemContent-c44ec79e"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1"><span class="text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1">Documentation</span></span></div></a><a class="reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024" href="https://cryptojs.gitbook.io/docs/#hashing" style=""><div class="reset-3c756112--menuItemContent-c44ec79e"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1"><span class="text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1--pageTocLinkH2-2294976c">Hashing</span></span></div></a><a class="reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024" href="https://cryptojs.gitbook.io/docs/#hmac" style=""><div class="reset-3c756112--menuItemContent-c44ec79e"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1"><span class="text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1--pageTocLinkH2-2294976c">HMAC</span></span></div></a><a class="reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024" href="https://cryptojs.gitbook.io/docs/#pbkdf2" style=""><div class="reset-3c756112--menuItemContent-c44ec79e"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1"><span class="text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1--pageTocLinkH2-2294976c">PBKDF2</span></span></div></a><a class="reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024" href="https://cryptojs.gitbook.io/docs/#ciphers" style=""><div class="reset-3c756112--menuItemContent-c44ec79e"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1"><span class="text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1--pageTocLinkH2-2294976c">Ciphers</span></span></div></a><a class="reset-3c756112--menuItem-aa02f6ec--menuItemLight-757d5235--menuItemInline-173bdf97--pageTocItem-f4427024" href="https://cryptojs.gitbook.io/docs/#encoders" style=""><div class="reset-3c756112--menuItemContent-c44ec79e"><span class="text-4505230f--UIH300-2063425d--textContentFamily-49a318e1"><span class="text-4505230f--UIH200-50ead35f--textContentFamily-49a318e1--pageTocLinkH2-2294976c">Encoders</span></span></div></a></div></div></div></div></div></div></div></div></div></div><div role="presentation" class="reset-3c756112--backdrop-1322b68a--hidden-247382c3--sheetBackdrop-457fd54f"><div class="reset-3c756112--sheet-5947ff24--small-7b7141ba" role="presentation"><div class="reset-3c756112--sheetHeader-2187bd71--small-2783b5d4"><div class="reset-3c756112--sheetHeaderInner-96159b50"><div class="reset-3c756112--container-04a01b07"><div aria-label="" class="reset-3c756112--inputWrapper-63396dac--TextH400-3033861f--medium-4505230f--light-502263b4--input-6d442051"><div class="reset-3c756112--inputInnerSizer-756c9114"><input data-test="searchinput" placeholder="Search..." type="text" class="inputInner-5c86b87d--medium-0bbed4bd--inputInner-2e165f14" value=""></div><div class="reset-3c756112--inputAddOn-45de9ec1--inputAddOnPrefix-202fa60d--inputIcon-10ebc067"><svg preserveAspectRatio="xMidYMid meet" height="1em" width="1em" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--text-3f89f380"><g><circle cx="10.5" cy="10.5" r="7.5"></circle><line x1="21" y1="21" x2="15.8" y2="15.8"></line></g></svg></div></div></div></div><div class="reset-3c756112--sheetHeaderAction-4aa20623" role="presentation"><svg preserveAspectRatio="xMidYMid meet" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="currentColor" class="icon-7f6730be--medium-5b607319"><g><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></g></svg></div></div><div class="reset-3c756112--withScrollbar-39338630--scrollAxisY-7680295e--sheetInner-3359a544--small-2783b5d4"><div class="reset-3c756112--placeholderWrapper-c9dfdfae"><div class="reset-3c756112--placeholder-392bf2fa"><div class="reset-3c756112--placeholderIcon-ef0fe362"><img src="./CryptoJS - CryptoJS_files/7f9239ce726764aa22093884902e018d.svg" alt="Search Placeholder"></div></div></div></div></div></div></div></div></div><div class="reset-3c756112--pendingTransitionBar-4d0ba35e--none-905a1220"></div></div>
            <script>
            window.GITBOOK_STATE = {"state":{"database":{"orgs/-LVOh1OH2-hZXChaLekq/infos":{"kind":"org","data":{"kind":"org","uid":"-LVOh1OH2-hZXChaLekq","name":"CryptoJS","createdAt":1546619417710,"createdBy":"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3","logoURL":"https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/orgs%2F-LVOh1OH2-hZXChaLekq%2Favatar.png?generation=1546860322216155\u0026alt=media","baseDomain":"cryptojs","type":null,"spacesPermission":{},"customDomain":null,"ssoSignInLabel":null,"defaultSpace":null,"lockReason":null,"useCase":null,"usageStatuses":{"members":"below","privateSpaces":"below","publicSpaces":"reached"},"hideBranding":false}},"spaces/-LVOh1OI8lhWfR_994H2/infos":{"kind":"space","data":{"uid":"-LVOh1OI8lhWfR_994H2","name":"CryptoJS","createdAt":1546619417783,"ownerID":"-LVOh1OH2-hZXChaLekq","isPrivate":false,"isUnlisted":false,"secretToken":null,"baseName":"docs","createdBy":"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3","logoURL":"https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/spaces%2F-LVOh1OI8lhWfR_994H2%2Favatar.png?generation=1546620224707409\u0026alt=media","fullLogoURL":null,"emoji":null,"colorPrimary":"#000000","headerTheme":"light","font":null,"locale":null,"primaryRevision":"-LVZGHLlmdCp3-yBG7qd","edits":{"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3":{"createdAt":1546796737970,"updatedAt":1546796737970,"count":1}},"algoliaAPIKey":"ODgxYmRkMTMxMzY3M2UxZTBlZDhjZmRjMmM5NTEwMjA2Yzg0YjQ3NTdkMzgxNzhkMTYyYmY1YTBhNTM2ODQ4OGZpbHRlcnM9LUxWT2gxT0k4bGhXZlJfOTk0SDI=","customDomain":null,"links":[],"hasGitHubSync":false,"editOnGitHub":null,"googleAnalyticsID":null,"intercomID":null,"hasPageRating":true,"hasPDFExport":false,"indexedRevision":null}},"spaces/-LVOh1OI8lhWfR_994H2/revisions/-LVZGHLlmdCp3-yBG7qd":{"kind":"revision","data":{"uid":"-LVZGHLlmdCp3-yBG7qd","message":"","createdAt":1546796737970,"createdBy":"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3","parents":["-LVOnN8J3TCargFsahGH","-LVZG6O-dMPesU6JN_Ht"],"content":{"primaryVersion":"master","versions":{"master":{"index":0,"ref":"master","title":"1.0.0","github":null,"locale":null,"entryPage":"-LVOh1OFsnT_6d-fCb3h","pages":{"-LVOh1OFsnT_6d-fCb3h":{"uid":"-LVOh1OFsnT_6d-fCb3h","kind":"document","title":"CryptoJS","path":"master","href":null,"description":"Original documentation: https://code.google.com/archive/p/crypto-js/","documentURL":"https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/documents%2F-LVOh1OI8lhWfR_994H2%2F-LVZG6O-dMPesU6JN_Ht%2Fmaster%2F-LVOh1OFsnT_6d-fCb3h%2Fdocument.json?alt=media\u0026token=e434ea2a-7e6c-41c8-9b7c-6ae496eaee79","createdAt":1546619463248,"edits":{"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3":{"createdAt":1546796719024,"updatedAt":1546796719024,"count":1}},"github":null,"stats":{"words":1130,"images":0,"codeLines":207,"revisions":3},"pages":null}}}},"assets":{"-LVOlk6zL9BlMrCcv4OQ":{"uid":"-LVOlk6zL9BlMrCcv4OQ","name":"crypto-js.md","downloadURL":"https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-LVOh1OI8lhWfR_994H2%2F-LVOlbB8QyrYaOo7UOXd%2F-LVOlk6zL9BlMrCcv4OQ%2Fcrypto-js.md?alt=media\u0026token=09d31c4f-dc81-424d-b70b-3d3879fc9fef","size":14190,"contentType":"text/markdown","createdAt":1546621112432,"github":null,"edits":{"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3":{"createdAt":1546621112432,"updatedAt":1546621112432,"count":1}}}}},"github":[],"rollbackOf":null}},"orgs/ZRRcuLdfvIOWwHOTdsdcZGEVeTF3/infos":{"kind":"user","data":{"kind":"user","uid":"ZRRcuLdfvIOWwHOTdsdcZGEVeTF3","baseDomain":"pedrogomes94","defaultSpace":null,"displayName":"Pedro Gomes","photoURL":"https://lh6.googleusercontent.com/-Cuzzf4f4acM/AAAAAAAAAAI/AAAAAAAAA_M/2fsgLQMfuPY/photo.jpg","deletedAt":null,"usageStatuses":null}}},"documents":{"documents":{"https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/documents%2F-LVOh1OI8lhWfR_994H2%2F-LVZG6O-dMPesU6JN_Ht%2Fmaster%2F-LVOh1OFsnT_6d-fCb3h%2Fdocument.json?alt=media\u0026token=e434ea2a-7e6c-41c8-9b7c-6ae496eaee79":{"format_version":1,"document":{"kind":"document","key":"4","data":{"schema_version":6},"nodes":[{"kind":"block","type":"heading-1","key":"43dc2acbda5a446eb11cf3717baac5cc","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7a15bacf86584d7bb480f42efe5eee6d","ranges":[{"kind":"range","marks":[],"text":"Documentation"}]}]},{"kind":"block","type":"paragraph","key":"e8eaad3f512249389aab5df92051b761","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1ba7a835601c490eb64c0dbbaa2ef1a5","ranges":[{"kind":"range","marks":[],"text":"JavaScript implementations of standard and secure cryptographic algorithms"}]}]},{"kind":"block","type":"paragraph","key":"0d48896a1a304b55bf238a9c0ec34f62","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ec748315aa5c409e9264ba934b41ffba","ranges":[{"kind":"range","marks":[],"text":"CryptoJS is a growing collection of standard and secure cryptographic algorithms implemented in JavaScript using best practices and patterns. They are fast, and they have a consistent and simple interface."}]}]},{"kind":"block","type":"paragraph","key":"49c4daa49e3d4da69125de61b2f72b30","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4a18e99dfa1340d49c4357fa7f208fd4","ranges":[{"kind":"range","marks":[],"text":"If you have a problem with CryptoJS, if you want to discuss new features, or if you want to contribute to the project, you can visit the CryptoJS "}]},{"kind":"inline","type":"link","key":"3e439126acce426c98802ed7d73ce486","isVoid":false,"data":{"href":"http://groups.google.com/group/crypto-js/topics"},"nodes":[{"kind":"text","key":"cc7cb17c47594be88e2792a0b8cedb55","ranges":[{"kind":"range","marks":[],"text":"discussion group"}]}]},{"kind":"text","key":"a7b570ccfc50420abdc6f5e77eac1c96","ranges":[{"kind":"range","marks":[],"text":"."}]}]},{"kind":"block","type":"heading-2","key":"9b2dadabe58344c6b45c891c6798cc9b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b03b70d4683143c1a56d7943000a6c2b","ranges":[{"kind":"range","marks":[],"text":"Hashing"}]}]},{"kind":"block","type":"heading-3","key":"b0e6d3d133854469898ef33d5c992f11","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1f7f3d0baca0451cabaa4c25dfdee07d","ranges":[{"kind":"range","marks":[],"text":"The Hashing Algorithms"}]}]},{"kind":"block","type":"paragraph","key":"9259659d813f4816ad4dc2c4bb372f63","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"25cf408ba1044b3aabf991f9f5a87571","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"MD5"}]}]},{"kind":"block","type":"paragraph","key":"4d4b057c1c2e49c5be81e6161c783126","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"58c1150ef772401eb48a753b3315ea5b","ranges":[{"kind":"range","marks":[],"text":"MD5 is a widely used hash function. It's been used in a variety of security applications and is also commonly used to check the integrity of files. Though, MD5 is not collision resistant, and it isn't suitable for applications like SSL certificates or digital signatures that rely on this property."}]}]},{"kind":"block","type":"code","key":"c6d135b395a746c8a25c34fd370cc8cb","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"cee6fecca50e49a0886f802795e4221f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a1cbd0c95e544624a892696b59c9cc1f","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.MD5(\"Message\");"}]}]}]},{"kind":"block","type":"paragraph","key":"d82aa2234def41169fb4bdb8992daebc","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7a89f223837242e1a4b3b836b42115c9","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"SHA-1"}]}]},{"kind":"block","type":"paragraph","key":"9eed18135c7d4d6aab8ef0591883b1d1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7271e31c873b434badac1604af97a410","ranges":[{"kind":"range","marks":[],"text":"The SHA hash functions were designed by the National Security Agency (NSA). SHA-1 is the most established of the existing SHA hash functions, and it's used in a variety of security applications and protocols. Though, SHA-1's collision resistance has been weakening as new attacks are discovered or improved."}]}]},{"kind":"block","type":"code","key":"e2e12db16e11460ca335a0ad6e923a53","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"23c9038a2a444b038d78bc4b21b5ccea","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d3baaab3a769413d9b36039e5bd6e4e7","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA1(\"Message\");"}]}]}]},{"kind":"block","type":"paragraph","key":"bb2ad32909984a2bbe5a79cc1b501440","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a8161b5176714e159b2b924568c67c6d","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"SHA-2"}]}]},{"kind":"block","type":"paragraph","key":"8725d7494a6b4f35a2a772dfe24ccda9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c7fa0f3532fb4cef85a162b6d96b434b","ranges":[{"kind":"range","marks":[],"text":"SHA-256 is one of the four variants in the SHA-2 set. It isn't as widely used as SHA-1, though it appears to provide much better security."}]}]},{"kind":"block","type":"code","key":"0e20b8cbb0594a82bc3ce7ac05159a6c","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"5989645a919148e695dbc64baca95dce","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1d40115125a94007b62dc4d01828f3dd","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA256(\"Message\");"}]}]}]},{"kind":"block","type":"paragraph","key":"555121bb8c3b49ea95aa87ede908f772","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"55ba7a128d564dbc8bf9f9c26798274d","ranges":[{"kind":"range","marks":[],"text":"SHA-512 is largely identical to SHA-256 but operates on 64-bit words rather than 32."}]}]},{"kind":"block","type":"code","key":"dceaa948a1954b7aaca264c28211bc7f","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"7aa2d70b4c744ae09ee49f976633cc3e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4b9d300e2f684429ba463ba65662b842","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA512(\"Message\");"}]}]}]},{"kind":"block","type":"paragraph","key":"79a1008de7de4408a0e00a956a919f1f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3bade9fb91ae4e768438d64e918d7008","ranges":[{"kind":"range","marks":[],"text":"CryptoJS also supports SHA-224 and SHA-384, which are largely identical but truncated versions of SHA-256 and SHA-512 respectively."}]}]},{"kind":"block","type":"paragraph","key":"d0d425f53dae4f429df5c503c474cb55","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b19a3d0d08a44af1a73dae0c29a0268f","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"SHA-3"}]}]},{"kind":"block","type":"paragraph","key":"7e17922a5a574db1b1a1d2966dcb849a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1343e5d398b74af881da3ac012d51289","ranges":[{"kind":"range","marks":[],"text":"SHA-3 is the winner of a five-year competition to select a new cryptographic hash algorithm where 64 competing designs were evaluated."}]}]},{"kind":"block","type":"paragraph","key":"f5fa0bb771b24a4e95fb72d3933f28b0","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7c2ef997f1e9443e85c7985254d4b2b8","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"NOTE:"},{"kind":"range","marks":[],"text":" I made a mistake when I named this implementation SHA-3. It should be named Keccak[c=2d]. Each of the SHA-3 functions is based on an instance of the Keccak algorithm, which NIST selected as the winner of the SHA-3 competition, but those SHA-3 functions won't produce hashes identical to Keccak."}]}]},{"kind":"block","type":"code","key":"0f45f59dfd894eefa1676c849a161a8a","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"f72027b7e92f46f39b75eea596ed463b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"76dae5c9d6f74e10a28ca5e0d4f6cc08","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA3(\"Message\");"}]}]}]},{"kind":"block","type":"paragraph","key":"7cdacb0a2f424f2291c6b220b052729e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"43d3794882ec4221ab020e9932aa6d92","ranges":[{"kind":"range","marks":[],"text":"SHA-3 can be configured to output hash lengths of one of 224, 256, 384, or 512 bits. The default is 512 bits."}]}]},{"kind":"block","type":"code","key":"fb9760ad4f9a449cb51afb50eccda14f","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"72b652ea1412484e8f2c4338589d3025","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1e502d74508346da89c79cee0d2d2dcf","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA3(\"Message\", { outputLength: 512 });"}]}]},{"kind":"block","type":"code-line","key":"8fdde4494d904aebb70ecf49f1011624","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4877e5645be94a60baddc7433be0c3dd","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"9c6573d920c44878ac6b48fa5f7992dc","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7e3776c17f264810962c40db1e127c96","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA3(\"Message\", { outputLength: 384 });"}]}]},{"kind":"block","type":"code-line","key":"7ca9867879a94fd4835fc6293082b68d","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"da1e73f8aecd418ca68a9d9a0f624639","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"b7814b9716304997a48e010d5ab8b79f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ba6b56d5944c42f0a0b107e4f8bfe69d","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA3(\"Message\", { outputLength: 256 });"}]}]},{"kind":"block","type":"code-line","key":"e6e19a01955d40fc8d785f95ac82f64f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3d87f6509dd54aed891baa6cb456fce6","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"f312cabddd034cce954a56803b7c2aab","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b2cf1683ad7348559e7d457548a381a3","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA3(\"Message\", { outputLength: 224 });"}]}]}]},{"kind":"block","type":"paragraph","key":"90c0ae5bf165422c9823b8f6694f027e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"636ea6b9b0944a648c35276e646735e5","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"RIPEMD-160"}]}]},{"kind":"block","type":"code","key":"857067f285a04c1885f6dd8f5719c87e","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"e0239ac58e424793b43f6d1dc36553b6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3ee5e452a87f48f5824364f3dc60bfc5","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.RIPEMD160(\"Message\");"}]}]}]},{"kind":"block","type":"heading-3","key":"9e21e691dd5f4611916d81ee9df7b7e9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bea533a8cfe44c8e82f44300bc61c362","ranges":[{"kind":"range","marks":[],"text":"The Hashing Input"}]}]},{"kind":"block","type":"paragraph","key":"d96711100fcd4802ad083e1dc9e928fb","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f86834d55d5a4cbeae3625db13e37be1","ranges":[{"kind":"range","marks":[],"text":"The hash algorithms accept either strings or instances of CryptoJS.lib.WordArray. A WordArray object represents an array of 32-bit words. When you pass a string, it's automatically converted to a WordArray encoded as UTF-8."}]}]},{"kind":"block","type":"heading-3","key":"ab9afc8e0aab4d27869d9cc66864f9fa","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"6420da5444e741b3b46c40dcfc461eb3","ranges":[{"kind":"range","marks":[],"text":"The Hashing Output"}]}]},{"kind":"block","type":"paragraph","key":"aba51af328634bdb85fb0a1eeebb8780","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7f46ec59d8cc43fc8f251b7dcbc9ca8c","ranges":[{"kind":"range","marks":[],"text":"The hash you get back isn't a string yet. It's a WordArray object. When you use a WordArray object in a string context, it's automatically converted to a hex string."}]}]},{"kind":"block","type":"code","key":"23a2bb1507e9451c97bb7ea6cfbeb8bd","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"c2d8871b4e04476b9b85ddeeca016fc3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"2bde99b220a6478994e2b5c37d846bde","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA256(\"Message\");"}]}]},{"kind":"block","type":"code-line","key":"1b6f3a80159b489ea35046af1b87578c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b7cde7236a4d417ca69c2d51918a1624","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"8c32e160c7a44a77bc7ab8d8a99e0984","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e2651156169c4367a6e36d24d7742a98","ranges":[{"kind":"range","marks":[],"text":"typeof hash"}]}]},{"kind":"block","type":"code-line","key":"ca4c179a63ca4e5cb4eb7928f67aa843","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8ec21a8a9c9e43ad918cf802a6acefcb","ranges":[{"kind":"range","marks":[],"text":"\u003e \"object\";"}]}]},{"kind":"block","type":"code-line","key":"84e98cd7ab1d4f22bcf29176f9f0cfc6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"501a37dae01c4c629e614cf4540e7f79","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"0630371deed74f7aa86bb45a6eaa3427","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5ad1d3655ab54e91ab67f373d78ab69c","ranges":[{"kind":"range","marks":[],"text":"hash"}]}]},{"kind":"block","type":"code-line","key":"85327f04b6e54565b1295976fbbc1f0b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"06a3d1ca3978498ba9a8693437c426f9","ranges":[{"kind":"range","marks":[],"text":"\u003e \"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91\";"}]}]}]},{"kind":"block","type":"paragraph","key":"69600f4e8d0e4d988d3b75f6bbba51a5","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"02a84663e545478cba7616cf6b148411","ranges":[{"kind":"range","marks":[],"text":"You can convert a WordArray object to other formats by explicitly calling the toString method and passing an encoder."}]}]},{"kind":"block","type":"code","key":"9bfa1a29ac724157b937e3080f94e746","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"ba61a3a30cf94a80ba1e2159b64a50b1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4cd5d433a54946cbb15be040c0a3466c","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.SHA256(\"Message\");"}]}]},{"kind":"block","type":"code-line","key":"41027456255a417eab7c8add4b5a35e1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a13b8b7018c24b0e9a21cfc3b3168d4e","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"768e6d79e8584b7a851e8ffc103a3ae6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"794938877cb241a594bdf7b399d5fd8b","ranges":[{"kind":"range","marks":[],"text":"hash.toString(CryptoJS.enc.Base64)"}]}]},{"kind":"block","type":"code-line","key":"d244d68f73014ac89080175dc6602601","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5ab52303b5164f0baa01aa61babd7ae7","ranges":[{"kind":"range","marks":[],"text":"\u003e \"L3dmip37+NWEi57rSnFFypTG7ZI25Kdz9tyvpRMrL5E=\";"}]}]},{"kind":"block","type":"code-line","key":"6490e04578f7409395ed7d703a1a7f2c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"768181ce93e94785abd7492fedafb6da","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"b43fa40a850b42d8828e72cb960665a1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"102c23d137124ddbb47cedbd06650790","ranges":[{"kind":"range","marks":[],"text":"hash.toString(CryptoJS.enc.Hex)"}]}]},{"kind":"block","type":"code-line","key":"994711c1c6e94c75bdea178c8aa127cf","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"71fa8bae14e94e77853a56fcd334941f","ranges":[{"kind":"range","marks":[],"text":"\u003e \"2f77668a9dfbf8d5848b9eeb4a7145ca94c6ed9236e4a773f6dcafa5132b2f91\";"}]}]}]},{"kind":"block","type":"heading-3","key":"435f9ec7183140fcabdb436686fe047e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ca26f6ac366f4b349deae8714a194378","ranges":[{"kind":"range","marks":[],"text":"Progressive Hashing"}]}]},{"kind":"block","type":"code","key":"75bb710a001f4487a1892e7d82b65280","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"418de05b0eed413db0fe7d5cfcf93005","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1c7546b88aaa43a3b6c839a82a89cc9b","ranges":[{"kind":"range","marks":[],"text":"var sha256 = CryptoJS.algo.SHA256.create();"}]}]},{"kind":"block","type":"code-line","key":"abef636d606d4de8bfa1c141ce81624c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c0c4ec93eba242fb91843c576a0cb5ef","ranges":[{"kind":"range","marks":[],"text":"sha256.update(\"Message Part 1\");"}]}]},{"kind":"block","type":"code-line","key":"b95b6bd5efcc44cc8f78961b00d9d8fa","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e6399683c62d4e02b71be6db8e9ee82f","ranges":[{"kind":"range","marks":[],"text":"sha256.update(\"Message Part 2\");"}]}]},{"kind":"block","type":"code-line","key":"8e2f95559d534d999324700c247efd76","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b45b02912ebd4175b60f89a1f91b45b7","ranges":[{"kind":"range","marks":[],"text":"sha256.update(\"Message Part 3\");"}]}]},{"kind":"block","type":"code-line","key":"adf4e1c5e87c4cf496b9c77fd75563ff","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4af96dff9ac9481b87a23d1be22991ce","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"d5a4c8a6489e4007977b311dfe1d13a4","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e9ef04c2726149309c9fce667c41b977","ranges":[{"kind":"range","marks":[],"text":"var hash = sha256.finalize();"}]}]}]},{"kind":"block","type":"heading-2","key":"5778a4e994f5484eaf253207a0389882","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"608ae642344847828e409d9a21a0002e","ranges":[{"kind":"range","marks":[],"text":"HMAC"}]}]},{"kind":"block","type":"paragraph","key":"9ca1b4ec8c9349d7beb0e4dc27bc73e3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c48b9f0f674346e6bc4dc209c1c0c159","ranges":[{"kind":"range","marks":[],"text":"Keyed-hash message authentication codes (HMAC) is a mechanism for message authentication using cryptographic hash functions."}]}]},{"kind":"block","type":"paragraph","key":"6867a6c09a724a3b87c1cd20a2200a31","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"04845c79a7a74fc1af3144b1efb658fd","ranges":[{"kind":"range","marks":[],"text":"HMAC can be used in combination with any iterated cryptographic hash function."}]}]},{"kind":"block","type":"code","key":"304013f26f4b497da174ca642f74dc93","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"34c559e512604e99b8edb484c023472e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"356750aafdb24e32bbb60200b412f08e","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.HmacMD5(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"de611d83fb7f42a4888ecf59dc5f1c22","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"45f911f130f64c4f965fe8b539e734d6","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.HmacSHA1(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"c54510a369804b3f959082aa30da3123","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c4e3c1fa80a24691acb4bb24b62f330d","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.HmacSHA256(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"77f78d7eaba245e69258a68327082a2b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3255084b82fa47e69ae1c962ca34e441","ranges":[{"kind":"range","marks":[],"text":"var hash = CryptoJS.HmacSHA512(\"Message\", \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"heading-3","key":"63fe2e915f7940b58b12cef2dd017d77","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a4dd5ca9d0dd4334b345709761024627","ranges":[{"kind":"range","marks":[],"text":"Progressive HMAC Hashing"}]}]},{"kind":"block","type":"code","key":"2d2efbcb20494994bfd9c2530b44a97b","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"8f462245a6824de1ab7aa6f599669d87","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"0b260561982a477a876dc5ea2d6ff0cd","ranges":[{"kind":"range","marks":[],"text":"var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"0a485f8388264f95b3cc0b25379a5748","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"34b8c3ae75134003a2a5210276823347","ranges":[{"kind":"range","marks":[],"text":"hmac.update(\"Message Part 1\");"}]}]},{"kind":"block","type":"code-line","key":"0f8c96f598d9487d8cd6c11e1bf24088","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d3c09041e5fb479a9c4c6022f24e3996","ranges":[{"kind":"range","marks":[],"text":"hmac.update(\"Message Part 2\");"}]}]},{"kind":"block","type":"code-line","key":"fd7bdd4e714c40c294fc2897ae982cd0","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"071b57fdd8d645c1a717ad6bccae00b3","ranges":[{"kind":"range","marks":[],"text":"hmac.update(\"Message Part 3\");"}]}]},{"kind":"block","type":"code-line","key":"fda618d8ee214659bfdca51f8bb45773","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"86ec700b4fbf4bd89f2a7e93d71c5e20","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"fe30243dcacc444cb7f1e874bb06928b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1d0c261421e4483fb8f49c991ea7bc7b","ranges":[{"kind":"range","marks":[],"text":"var hash = hmac.finalize();"}]}]}]},{"kind":"block","type":"heading-2","key":"e92e6fe44d984b13bf616b8e66a80b50","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b89635022ba642a1b11550caec6dd51c","ranges":[{"kind":"range","marks":[],"text":"PBKDF2"}]}]},{"kind":"block","type":"paragraph","key":"33bc32e5c8864bbaacce1ed4bca6443c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"114234a58a1c4a1b998045cc735c8a78","ranges":[{"kind":"range","marks":[],"text":"PBKDF2 is a password-based key derivation function. In many applications of cryptography, user security is ultimately dependent on a password, and because a password usually can't be used directly as a cryptographic key, some processing is required."}]}]},{"kind":"block","type":"paragraph","key":"c7ae4a014e014eabbe41d3d8a0a727bc","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d6a6f5f23c0c4c00890bedd09b2e8bcf","ranges":[{"kind":"range","marks":[],"text":"A salt provides a large set of keys for any given password, and an iteration count increases the cost of producing keys from a password, thereby also increasing the difficulty of attack."}]}]},{"kind":"block","type":"code","key":"d1d06027da3641528d3bd0550328b6e3","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"cf3a3f176a934209aa90fc8977f6a91b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a366b2c0d3f24110a01d8affece22bbb","ranges":[{"kind":"range","marks":[],"text":"var salt = CryptoJS.lib.WordArray.random(128 / 8);"}]}]},{"kind":"block","type":"code-line","key":"780aed61d93945908776c57ef058119d","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"6d0a325afc1f47ebb3231cc597409544","ranges":[{"kind":"range","marks":[],"text":"var key128Bits = CryptoJS.PBKDF2(\"Secret Passphrase\", salt, {"}]}]},{"kind":"block","type":"code-line","key":"d66aaace355d4f0394c9aecdffb8061f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"efdf1b3b5d624de59159079cc1c7cbf2","ranges":[{"kind":"range","marks":[],"text":"  keySize: 128 / 32"}]}]},{"kind":"block","type":"code-line","key":"133cb90506f245cdb2ed199e4e0baad3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"cf7ced2ee2fc49c19ab6923131bf9907","ranges":[{"kind":"range","marks":[],"text":"});"}]}]},{"kind":"block","type":"code-line","key":"b2a267d762e54bc8838b19537674b55f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"33d3b7e94f8d4c26879afc40f9573302","ranges":[{"kind":"range","marks":[],"text":"var key256Bits = CryptoJS.PBKDF2(\"Secret Passphrase\", salt, {"}]}]},{"kind":"block","type":"code-line","key":"d4e0b8a7ea204cc3bd31a5902f1ab588","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"987336f3b2894a1ca4d19f41132df1e9","ranges":[{"kind":"range","marks":[],"text":"  keySize: 256 / 32"}]}]},{"kind":"block","type":"code-line","key":"ff9c936c3c084d3f940d48d76a3f62fe","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3c95290eda424ca2acfe92c8016d0619","ranges":[{"kind":"range","marks":[],"text":"});"}]}]},{"kind":"block","type":"code-line","key":"c82a7196e56e44d8b2cf37a3faa89ffd","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b181d89816ba42648e873825950417aa","ranges":[{"kind":"range","marks":[],"text":"var key512Bits = CryptoJS.PBKDF2(\"Secret Passphrase\", salt, {"}]}]},{"kind":"block","type":"code-line","key":"1369711907424097a944e6e1813f3886","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7d11baea30374ea0996fa924c5b5f91d","ranges":[{"kind":"range","marks":[],"text":"  keySize: 512 / 32"}]}]},{"kind":"block","type":"code-line","key":"b8467056a01049b1a7d667a97d3a3626","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5ccd1a2df6c84635971649292a471edd","ranges":[{"kind":"range","marks":[],"text":"});"}]}]},{"kind":"block","type":"code-line","key":"cf146d5a9aef48efb473b28821fbc2e6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fe39ef51108941f6830cbab77d297166","ranges":[{"kind":"range","marks":[],"text":"var key512Bits1000Iterations = CryptoJS.PBKDF2(\"Secret Passphrase\", salt, {"}]}]},{"kind":"block","type":"code-line","key":"f3221d4c5dec4057ac9f4b5970dd7c57","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bbf978dff90141b0958c6028495b372c","ranges":[{"kind":"range","marks":[],"text":"  keySize: 512 / 32,"}]}]},{"kind":"block","type":"code-line","key":"5f23257bcba04119a7a642aa8cc9fe1e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e5b6c52fe38b4de09ba46ea1776d5f6c","ranges":[{"kind":"range","marks":[],"text":"  iterations: 1000"}]}]},{"kind":"block","type":"code-line","key":"68232a4814884844abab71cccec73178","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ed8c8859edf94fae88a3e837cf76b641","ranges":[{"kind":"range","marks":[],"text":"});"}]}]}]},{"kind":"block","type":"heading-2","key":"042c4409c91747bd8004979178c38ad1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"50f45f130a8341c0bef3555f4758bf76","ranges":[{"kind":"range","marks":[],"text":"Ciphers"}]}]},{"kind":"block","type":"heading-3","key":"4e96fb6cd4a64817bec6b709d5768167","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d67ae3ba8ddf42bf956eeebee5126d1f","ranges":[{"kind":"range","marks":[],"text":"The Cipher Algorithms"}]}]},{"kind":"block","type":"paragraph","key":"37891a678b0040d28bfb75c251512620","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e647c2e177d9473b8e0e10e1961a1ca7","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"AES"}]}]},{"kind":"block","type":"paragraph","key":"ee195777517b4c5795c0110346167e58","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"07c7c6ccc6f3464c9818d6cf49a8161b","ranges":[{"kind":"range","marks":[],"text":"The Advanced Encryption Standard (AES) is a U.S. Federal Information Processing Standard (FIPS). It was selected after a 5-year process where 15 competing designs were evaluated."}]}]},{"kind":"block","type":"code","key":"4a71c0eeb44d4a21abe0e0a47a170a2e","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"10864cdc89be44b484ae8c3ee864ef28","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"199c9d904f204270b40add01db7b6d65","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.AES.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"7a03c37a850042acb11006b2b5732607","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a1c944888a474530889c5d8f7631baa5","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"a349ce9999084f0480582ed7456974a3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"eae42faf44c24a2eb7b8ef9e293ca586","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.AES.decrypt(encrypted, \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"paragraph","key":"016ae0968d4d49c4bd70115698269256","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4ab8f076ea7f45a3a5a1e35f298ce168","ranges":[{"kind":"range","marks":[],"text":"CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key."}]}]},{"kind":"block","type":"paragraph","key":"1c417d4c067342d0979cb14ac3edc394","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1ee9b008387641b09c6bfdcb101deb7c","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"DES, Triple DES"}]}]},{"kind":"block","type":"paragraph","key":"590c0f8311c64a73911953ebc48cda4c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"074fd6bc1122427487cb547a0645532c","ranges":[{"kind":"range","marks":[],"text":"DES is a previously dominant algorithm for encryption, and was published as an official Federal Information Processing Standard (FIPS). DES is now considered to be insecure due to the small key size."}]}]},{"kind":"block","type":"code","key":"d483a61579044193a5a364899d65229a","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"65a02d4963c749b88a4bb3fe5a11081f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b6d25fbfa45849188635e3c6cb411e72","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.DES.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"aa741dc6a7864063a07adf07d586c953","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5c824d74b9ec44959d35af9764a040e0","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"1865258eda9a4ab29446e685221b47c5","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"42224469f6c34dd888cbfdd7b718b3c0","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.DES.decrypt(encrypted, \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"paragraph","key":"6f072e2990a94652b4789b92b1b8381f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8a4dc3b919c44258a28e374493110581","ranges":[{"kind":"range","marks":[],"text":"Triple DES applies DES three times to each block to increase the key size. The algorithm is believed to be secure in this form."}]}]},{"kind":"block","type":"code","key":"76d6911078484c42a5e312808c7728b0","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"b289aca61d574498acbea98a8e846313","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"75112edc0fdf46a6810592f30ad7edba","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.TripleDES.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"9777eced6ada4dbbaeb5c7760e0c60ef","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4df0a18731d646b8a9d37d3e8db3138d","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"30828c52abee4f09bb87b2211c3638e6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"02ac2ab3834143c588af97984fe09970","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.TripleDES.decrypt(encrypted, \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"paragraph","key":"e80d3d890b59489cad525f4aef22173e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fcf9ea27655647f2bccfed481157adf5","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"Rabbit"}]}]},{"kind":"block","type":"paragraph","key":"9502471385ca45089bca1cadd6fce9ec","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"13867677a8e44bb5abe407538e731912","ranges":[{"kind":"range","marks":[],"text":"Rabbit is a high-performance stream cipher and a finalist in the eSTREAM Portfolio. It is one of the four designs selected after a 3 1/2-year process where 22 designs were evaluated."}]}]},{"kind":"block","type":"code","key":"082f1bdc3b3740fa86d45653b6103b67","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"56489617bf95486db597c47d1a197c9e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"44b58fc6671e41f69b70b71553d76ae5","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.Rabbit.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"77eac2200bf54dafb666c89d58f5f941","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e44b66f98d844498b084408718652b2c","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"8f96bbfe0dcb4f668f4df3febaab2732","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"57f1d2fcfc474609a840d10083ffd179","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.Rabbit.decrypt(encrypted, \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"paragraph","key":"b8a97ed20a3242ddab450350810efda8","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"80397b7be390438c8025be3ecd678d8e","ranges":[{"kind":"range","marks":[{"kind":"mark","data":{},"type":"bold"}],"text":"RC4, RC4Drop"}]}]},{"kind":"block","type":"paragraph","key":"bdaf372d955f43909360e46348ce6fab","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"33b0106de76f408e87dcd089c3087e0d","ranges":[{"kind":"range","marks":[],"text":"RC4 is a widely-used stream cipher. It's used in popular protocols such as SSL and WEP. Although remarkable for its simplicity and speed, the algorithm's history doesn't inspire confidence in its security."}]}]},{"kind":"block","type":"code","key":"4eb9d0d304de4919bd579ff904c3d4c0","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"92232205a92d46109b1a48b48c53f662","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f38650473873457db12785014bbc2731","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.RC4.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"907afd4b260c4465af86dd48cb4cede1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"15804f9dc4264fb8a8c7a5bb29e8ad8b","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"094fbac3935f4e90be1127421bf4e503","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"da90182a76c84c1ba677b9b069e420a0","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.RC4.decrypt(encrypted, \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"paragraph","key":"a2d67665d1fd4423833a40719ea156a9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"64ca3c5a94d44739b5fd970c268d2699","ranges":[{"kind":"range","marks":[],"text":"It was discovered that the first few bytes of keystream are strongly non-random and leak information about the key. We can defend against this attack by discarding the initial portion of the keystream. This modified algorithm is traditionally called RC4-drop."}]}]},{"kind":"block","type":"paragraph","key":"9c8c12821faf42879f5d31143a550d88","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d2cfd7a5e93b4b9493ff97ce5b78869f","ranges":[{"kind":"range","marks":[],"text":"By default, 192 words (768 bytes) are dropped, but you can configure the algorithm to drop any number of words."}]}]},{"kind":"block","type":"code","key":"16739c752b0b4eed9daef982fde87b74","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"af824ea429ea46b0b16d8f36063852f1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"45ab199c9c6d462484f30cee710e60f0","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.RC4Drop.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"e56e784e1b7745359b089294a5c25ec0","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e5f1192e8c174e39b0e80c43cdee2c71","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"57ca031f9a5e41afb201c3cd3daf6125","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"466922872f124e66a9ce0423a6c4996c","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.RC4Drop.encrypt(\"Message\", \"Secret Passphrase\", {"}]}]},{"kind":"block","type":"code-line","key":"9e056ed60db24a3091a51eba796c4ddf","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"62ce5fa73b2c44d2ab143fc75999ebdd","ranges":[{"kind":"range","marks":[],"text":"  drop: 3072 / 4"}]}]},{"kind":"block","type":"code-line","key":"5da2684c32534d0a949e4129c923ddbe","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8deb228fdf4d4a8f856636e3c72bfda5","ranges":[{"kind":"range","marks":[],"text":"});"}]}]},{"kind":"block","type":"code-line","key":"85b8bef2aa074a6db85dfc5be4bee7fd","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7ab01417df0f46e78e55be3b6465f17a","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"9fac4d7f6c254ecdb4b28801b8d88bb1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"99b1397d8ff94feea46b027251b287f9","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.RC4Drop.decrypt(encrypted, \"Secret Passphrase\", {"}]}]},{"kind":"block","type":"code-line","key":"cbe9bdc0a40040c388e31aee4c2f3328","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c605e3a991274850ae5b2689615c6fa4","ranges":[{"kind":"range","marks":[],"text":"  drop: 3072 / 4"}]}]},{"kind":"block","type":"code-line","key":"653f174e7a2a4ae688914a297cd4a05b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8c83b1bf769b47b8848d08f837d2bf8d","ranges":[{"kind":"range","marks":[],"text":"});"}]}]}]},{"kind":"block","type":"heading-3","key":"fb6eef907efd420e8c344589d4b9f0d3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4d21d91998564d8d8e98e640c982085c","ranges":[{"kind":"range","marks":[],"text":"Custom Key and IV"}]}]},{"kind":"block","type":"code","key":"ca6052e0ae284bc9ab3e1ef77b64d44f","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"3e59465f1cb245ebb4ec8d3b027aaf1d","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5ff1d7bd24354e399db73e91c7ef7de2","ranges":[{"kind":"range","marks":[],"text":"var key = CryptoJS.enc.Hex.parse(\"000102030405060708090a0b0c0d0e0f\");"}]}]},{"kind":"block","type":"code-line","key":"349f74a621c04329a3f1d805a07e9e5e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f2cc206b943642d28e7ac63173c76ea4","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"fcb5adf7d4b34666baf3919e22684f5a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7fe9dbe1fc4545ddb5368b36884bf205","ranges":[{"kind":"range","marks":[],"text":"var iv = CryptoJS.enc.Hex.parse(\"101112131415161718191a1b1c1d1e1f\");"}]}]},{"kind":"block","type":"code-line","key":"b30d4f5d214c4600aa8f1fb850a7a476","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"91a151651b6d496c8d955af474cc558f","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"4670ec3437984daaa03cf7398e83fe77","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c36bd0c854f644d1a90da0e1f29ed15d","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.AES.encrypt(\"Message\", key, { iv: iv });"}]}]}]},{"kind":"block","type":"heading-3","key":"085d3300ecb04c39a33658536a7657ca","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7d6edf2cfbcc47d38c83ff9daa216722","ranges":[{"kind":"range","marks":[],"text":"Block Modes and Padding"}]}]},{"kind":"block","type":"code","key":"a653419b5b674906bd09ab829e1ab635","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"498a61f3f860476890758a53a71061b5","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"964185916fc34ac09f7313d4154a377a","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.AES.encrypt(\"Message\", \"Secret Passphrase\", {"}]}]},{"kind":"block","type":"code-line","key":"b7113cf16448473897091a623f6ad780","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"23778538a199412e846cb90515c1cb61","ranges":[{"kind":"range","marks":[],"text":"  mode: CryptoJS.mode.CFB,"}]}]},{"kind":"block","type":"code-line","key":"5fa44d1414404260af433d8fb0ef0c66","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"9d5f8b2a3b85415ba9985b13661cccf2","ranges":[{"kind":"range","marks":[],"text":"  padding: CryptoJS.pad.AnsiX923"}]}]},{"kind":"block","type":"code-line","key":"e6e627cb8e8b4bc0b9d94f49a615b541","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d79fc58df493465f8e221fa1506b2499","ranges":[{"kind":"range","marks":[],"text":"});"}]}]}]},{"kind":"block","type":"paragraph","key":"9fb877aad11648168ad8a3ef63b3cbde","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"21999099bf3c40ba8e13a4791ecef6ff","ranges":[{"kind":"range","marks":[],"text":"CryptoJS supports the following modes:"}]}]},{"kind":"block","type":"list-unordered","key":"801257787f1842c780133657114f7059","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"list-item","key":"9fb8315abffa4e7ca98b93a9d73ca772","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"8406a87a7c9a488780bc131a17909532","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c6f029b54dab4f8699f406c2cfdf1e5a","ranges":[{"kind":"range","marks":[],"text":"CBC (the default)"}]}]}]},{"kind":"block","type":"list-item","key":"52f622e9909c4b5e9c5328d5f9e8354b","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"0b0906dabac64756b68dc5a991340c5f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"172c2e2228b14e578f07c6f309da96db","ranges":[{"kind":"range","marks":[],"text":"CFB"}]}]}]},{"kind":"block","type":"list-item","key":"810c3f8744684faaad7214271371444c","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"c4121f3cdb5a4180b7e2b0d37535a4be","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8f265da2b0734ca0a5d0563470e1334b","ranges":[{"kind":"range","marks":[],"text":"CTR"}]}]}]},{"kind":"block","type":"list-item","key":"8c8dd9a061b74dcb801f626db0614b37","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"c1ba84cf54f0410b80196cbff6d35f92","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b6d9304a8bbc46a3b379e7534f2854ff","ranges":[{"kind":"range","marks":[],"text":"OFB"}]}]}]},{"kind":"block","type":"list-item","key":"5819cb108f314570a2d945f99f4fd480","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"d45ebecb287847cb93eb99cd35cf0625","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fc93e103f39b4b499ad3ae4f06a9d288","ranges":[{"kind":"range","marks":[],"text":"ECB"}]}]}]}]},{"kind":"block","type":"paragraph","key":"3c3e21e72fdf4b13a4e5f60d83a22b27","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"eb3d806b944a45bfa5d6eb206315b6bd","ranges":[{"kind":"range","marks":[],"text":"And CryptoJS supports the following padding schemes:"}]}]},{"kind":"block","type":"list-unordered","key":"a3c681ae792648139f9a46d681adc14a","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"list-item","key":"a9d8d86619b64955b185f3853fe2ed92","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"dc770fa69c0b4d0daf3b32b138e7d8c8","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"043155a005fc4c53877618b12e5b5740","ranges":[{"kind":"range","marks":[],"text":"Pkcs7 (the default)"}]}]}]},{"kind":"block","type":"list-item","key":"3dc13284e2074604bb3e9e4af2cb1c6b","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"2552e0fbe01449b6870af6c4f9ac869e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e8f24f5e86b044319311ef6843e0c1ed","ranges":[{"kind":"range","marks":[],"text":"Iso97971"}]}]}]},{"kind":"block","type":"list-item","key":"d7114b48adc748648742bddb525f4032","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"924bc92a74fc47d9a96fc72a6b0ff810","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3316954e4433452b80a865eb32ed9cc9","ranges":[{"kind":"range","marks":[],"text":"AnsiX923"}]}]}]},{"kind":"block","type":"list-item","key":"928a7bfde1bb4dde995ece4f11539e08","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"95fde5b9d8224c4c8056227bda947753","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1d86a6269e714e9592c51710df657a8c","ranges":[{"kind":"range","marks":[],"text":"Iso10126"}]}]}]},{"kind":"block","type":"list-item","key":"b3ce76e652c941ec80e50c178de20f89","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"65eae16c49c045ab82cffb5dc62a1567","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c3c73cb1ad9840158d21c31da8bb0191","ranges":[{"kind":"range","marks":[],"text":"ZeroPadding"}]}]}]},{"kind":"block","type":"list-item","key":"e373a5a5b88742a4b90fdb6a910f12e2","isVoid":false,"data":{},"nodes":[{"kind":"block","type":"paragraph","key":"df561bd792c1492ca2c2359ca01bec0c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4914b2c1e3b549d4a88078aa47e15ea3","ranges":[{"kind":"range","marks":[],"text":"NoPadding"}]}]}]}]},{"kind":"block","type":"heading-3","key":"beb51a0b72e04e48a3b557818718ce8e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fd32291f4ce6409787d1ab250e998199","ranges":[{"kind":"range","marks":[],"text":"The Cipher Input"}]}]},{"kind":"block","type":"paragraph","key":"013903ea96934b3f9af45f240f73258a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8b5b8dadb78a4cf98683e99a993cce5f","ranges":[{"kind":"range","marks":[],"text":"For the plaintext message, the cipher algorithms accept either strings or instances of CryptoJS.lib.WordArray."}]}]},{"kind":"block","type":"paragraph","key":"8a79219181254ea492680f50b5826d49","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1dae18f8481248869f34b732f91ae5f1","ranges":[{"kind":"range","marks":[],"text":"For the key, when you pass a string, it's treated as a passphrase and used to derive an actual key and IV. Or you can pass a WordArray that represents the actual key. If you pass the actual key, you must also pass the actual IV."}]}]},{"kind":"block","type":"paragraph","key":"1da9903a800f46a3a9aab8e43588d409","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3c0b0a41572b4c6d893a5e1ed1319283","ranges":[{"kind":"range","marks":[],"text":"For the ciphertext, the cipher algorithms accept either strings or instances of CryptoJS.lib.CipherParams. A CipherParams object represents a collection of parameters such as the IV, a salt, and the raw ciphertext itself. When you pass a string, it's automatically converted to a CipherParams object according to a configurable format strategy."}]}]},{"kind":"block","type":"heading-3","key":"1258414cb28e466a80c6abbafef6e57b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"94eca018b20b4d53bcf18ae609ad3cf3","ranges":[{"kind":"range","marks":[],"text":"The Cipher Output"}]}]},{"kind":"block","type":"paragraph","key":"5d00309d832c4dbd845a140f3a17c5b4","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b4953ace9a6e42cd91ab4db8f8b55134","ranges":[{"kind":"range","marks":[],"text":"The plaintext you get back after decryption is a WordArray object. See Hashing's Output for more detail."}]}]},{"kind":"block","type":"paragraph","key":"5ecffef88e4c40f9bd572c240dec0084","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fa1b96d2e59548b88cb632513035d3ef","ranges":[{"kind":"range","marks":[],"text":"The ciphertext you get back after encryption isn't a string yet. It's a CipherParams object. A CipherParams object gives you access to all the parameters used during encryption. When you use a CipherParams object in a string context, it's automatically converted to a string according to a format strategy. The default is an OpenSSL-compatible format."}]}]},{"kind":"block","type":"code","key":"2282f16b31d243178e64dd003d3568a1","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"22f87e66bfe34a70a26d1af9e91531ed","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"128c16c5341a4f24a79bf78596c5c62b","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.AES.encrypt(\"Message\", \"Secret Passphrase\");"}]}]},{"kind":"block","type":"code-line","key":"ff9524a4a2a149c983db20af91d60ea5","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3e18efcc32d94639876af06de884ebd9","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"71ea93f9f6ed4f1f99b1f7bc074b962c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"22966b36f867462891ae16b51ed7a9e3","ranges":[{"kind":"range","marks":[],"text":"encrypted.key"}]}]},{"kind":"block","type":"code-line","key":"80818ea21ce84d25a6356371fcc7eeb3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7b1a9c561b7942f2890675ad5c28ec0c","ranges":[{"kind":"range","marks":[],"text":"\u003e \"74eb593087a982e2a6f5dded54ecd96d1fd0f3d44a58728cdcd40c55227522223 \";"}]}]},{"kind":"block","type":"code-line","key":"74953ae1ab4f49669261bacbd8bfff38","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"9bbad0933db947da81269517d5a7a385","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"4e11f1b8eba244989d691b50d7cc08fc","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e2e31737228641639e3e2a8e54148b5b","ranges":[{"kind":"range","marks":[],"text":"encrypted.iv"}]}]},{"kind":"block","type":"code-line","key":"ff8a385a0d53417d88509f4183939980","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d6b303b62c1b417fbadcb0b94cec685c","ranges":[{"kind":"range","marks":[],"text":"\u003e \"7781157e2629b094f0e3dd48c4d786115\";"}]}]},{"kind":"block","type":"code-line","key":"40ddae36332f45deaead174e9b2ace68","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bc577ed0929d4633ac485eeef248a957","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"1a83cb67cce948b68b5c9fb906aeafc7","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4a18aac5e485495a932433b0755d1521","ranges":[{"kind":"range","marks":[],"text":"encrypted.salt"}]}]},{"kind":"block","type":"code-line","key":"16035b8185ed4597bac9ea52cb15c57c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"de453dbb81f84ffe9629b1943bf29506","ranges":[{"kind":"range","marks":[],"text":"\u003e \"7a25f9132ec6a8b34\";"}]}]},{"kind":"block","type":"code-line","key":"54b3af42875248ff91f3fb58b06bba16","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"2e47757c43544a9196853a57931d2287","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"97ce198edf7448f3889716730a181928","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a7ec77743d514774b20b57ee51059679","ranges":[{"kind":"range","marks":[],"text":"encrypted.ciphertext"}]}]},{"kind":"block","type":"code-line","key":"600d417cb4514af798ae96a6b31a7f24","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"0666ce2cb937401bb926998a92c33119","ranges":[{"kind":"range","marks":[],"text":"\u003e \"73e54154a15d1beeb509d9e12f1e462a0\";"}]}]},{"kind":"block","type":"code-line","key":"16091ccdd4564c83b0167b7acfc3f186","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"22b3d7057dc94ddda5a004eb59f4bbe1","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"a91904cdddae48769fb4f2979f7e5d0b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"13b420d23b85405faa4135179e060fa9","ranges":[{"kind":"range","marks":[],"text":"encrypted"}]}]},{"kind":"block","type":"code-line","key":"19df285f55e54ddf8233f4171cd67427","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"95d6ae05163148e8adb0bb8e7ebb6eb7","ranges":[{"kind":"range","marks":[],"text":"\u003e \"U2FsdGVkX1+iX5Ey7GqLND5UFUoV0b7rUJ2eEvHkYqA=\";"}]}]}]},{"kind":"block","type":"paragraph","key":"5613363a4d5f469fb789d882b784a5e9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"230a7af406254a42917e5e755af172af","ranges":[{"kind":"range","marks":[],"text":"You can define your own formats in order to be compatible with other crypto implementations. A format is an object with two methods— stringify and parse—that converts between CipherParams objects and ciphertext strings."}]}]},{"kind":"block","type":"paragraph","key":"626bcbe1fdf94ceda8d8abe5d633df80","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"27ee6b19dd244f20b0ae2ace35342f65","ranges":[{"kind":"range","marks":[],"text":"Here's how you might write a JSON formatter:"}]}]},{"kind":"block","type":"code","key":"f41c436a796e40f2aeb411ea5df87f92","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"e96d32b1b02548e6b1b17e6dc62dc379","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"042479f0454f458fb069c2b42ef52a72","ranges":[{"kind":"range","marks":[],"text":"var JsonFormatter = {"}]}]},{"kind":"block","type":"code-line","key":"dd9832069ffb4c4a8207bdc8118a73d3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"79c41f0d715440ac98a89d0f7280f5ce","ranges":[{"kind":"range","marks":[],"text":"  stringify: function(cipherParams) {"}]}]},{"kind":"block","type":"code-line","key":"fe0d9d4ffb64459aaeecfa43dfca92e9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4e28351bc256453ea167a575fca907b0","ranges":[{"kind":"range","marks":[],"text":"    // create json object with ciphertext"}]}]},{"kind":"block","type":"code-line","key":"b3330d6b6b7643d1ac9f8de48f545672","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3465e92e2b4b4bc3bd09fb72ba4d9d97","ranges":[{"kind":"range","marks":[],"text":"    var jsonObj = { ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64) };"}]}]},{"kind":"block","type":"code-line","key":"9ed9f84a7a2943d2a54a78b29a53c46d","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1da5c113ec494603800ad14eb811829e","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"cb7358a62eb94f98b3ea756c9416489f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"dcf0ad7cc1c444b4aa0610ed5c9b7c29","ranges":[{"kind":"range","marks":[],"text":"    // optionally add iv or salt"}]}]},{"kind":"block","type":"code-line","key":"59ce962535074c8a9533def443db93cb","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b0f4dc91034b4bc88605eb62188cd752","ranges":[{"kind":"range","marks":[],"text":"    if (cipherParams.iv) {"}]}]},{"kind":"block","type":"code-line","key":"414aeea7ee48424ab9e76301a482b5a8","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"58980410161b493b99c520c8aeaac508","ranges":[{"kind":"range","marks":[],"text":"      jsonObj.iv = cipherParams.iv.toString();"}]}]},{"kind":"block","type":"code-line","key":"c8d0c6f6e42c4cb4bba5def183104b84","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5fd84462bc1c402db026ba69d6111b9d","ranges":[{"kind":"range","marks":[],"text":"    }"}]}]},{"kind":"block","type":"code-line","key":"cbb4aa2bc5cd4f9a99827e7263251124","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3353f69b17b94584b723f4bad4981282","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"4af9380af723416eae80318f98749754","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"42e9bf4572c9428f8a456f10ab654b5f","ranges":[{"kind":"range","marks":[],"text":"    if (cipherParams.salt) {"}]}]},{"kind":"block","type":"code-line","key":"f6e7708874cc4c4ba19a49f4a829c495","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"2f51b5a77fe5400591dfdd5dc2824b0e","ranges":[{"kind":"range","marks":[],"text":"      jsonObj.s = cipherParams.salt.toString();"}]}]},{"kind":"block","type":"code-line","key":"33c3f0021bb540ceb1d268939ee07581","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ca7c21615ffb4af68b66752ab53292ac","ranges":[{"kind":"range","marks":[],"text":"    }"}]}]},{"kind":"block","type":"code-line","key":"717866f313b348ae81b710777dda4de9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bdf9c9104edf429a89b7344bad08adf5","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"743452bc588f4747ad592f85c181ac17","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fe8250524e4a4add9e218311b63dffe4","ranges":[{"kind":"range","marks":[],"text":"    // stringify json object"}]}]},{"kind":"block","type":"code-line","key":"ab2ec1a3797e4b4cb74bc6d736a4fb17","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f5a1cc47610e4ea49f8b38a66777b7ea","ranges":[{"kind":"range","marks":[],"text":"    return JSON.stringify(jsonObj);"}]}]},{"kind":"block","type":"code-line","key":"f609a79e3f0a48268efab4b3eaec6a80","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1735f49273ad484a9c48ff4503efad45","ranges":[{"kind":"range","marks":[],"text":"  },"}]}]},{"kind":"block","type":"code-line","key":"ba7eb8d3b4a54bbbbf39098f3d7590fe","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"587fccda49e1409bba68f244fff74ed6","ranges":[{"kind":"range","marks":[],"text":"  parse: function(jsonStr) {"}]}]},{"kind":"block","type":"code-line","key":"1b4e7def655b462dabcdb3900aeefee1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ed64dfa109044975a5d5b4e21b039e16","ranges":[{"kind":"range","marks":[],"text":"    // parse json string"}]}]},{"kind":"block","type":"code-line","key":"9d124ef811b1422cbca4f45acec03417","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b44f5ea3a8814d63ab0d0e2bc09a0338","ranges":[{"kind":"range","marks":[],"text":"    var jsonObj = JSON.parse(jsonStr);"}]}]},{"kind":"block","type":"code-line","key":"1ad272da91c047dab47f66d7e6428a51","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"072a63c0987848ac9cceea56e9232bfe","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"1303d712c618498caa8bb21c07f3a76c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4b71654c07ac4e0984539bca039d8354","ranges":[{"kind":"range","marks":[],"text":"    // extract ciphertext from json object, and create cipher params object"}]}]},{"kind":"block","type":"code-line","key":"73a7690ee73a42e09692ee56a033ca3e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7b6ce7a7e2d94ce6bed3b7b0d3a4bd17","ranges":[{"kind":"range","marks":[],"text":"    var cipherParams = CryptoJS.lib.CipherParams.create({"}]}]},{"kind":"block","type":"code-line","key":"2b36b0cfc02341a7871694c5d16ff767","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bcf2feb21c5d4a4ebd45ab13ec19f4b2","ranges":[{"kind":"range","marks":[],"text":"      ciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)"}]}]},{"kind":"block","type":"code-line","key":"ac229bfe44d24a13a05aceb04f2e1491","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7dbc39e951d642e99f98d6560700715b","ranges":[{"kind":"range","marks":[],"text":"    });"}]}]},{"kind":"block","type":"code-line","key":"76d3c35067a54bd7a24a18fc27cce72e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"18b8a87418c34466ba6bab1ea42ea78e","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"aa6fc0f49db949a3893ca763a767d9c8","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e5f1d38330274b8f975d17a43e4dc03b","ranges":[{"kind":"range","marks":[],"text":"    // optionally extract iv or salt"}]}]},{"kind":"block","type":"code-line","key":"c44bf01891784189846c7a82cbacd8c5","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"90b0cf8fdd1d4573afb97566a2e7fbfa","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"037d12cd35ed4bf79e8c2dd6654ebf03","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ff93e1a155464c74ba1d71eb55d79420","ranges":[{"kind":"range","marks":[],"text":"    if (jsonObj.iv) {"}]}]},{"kind":"block","type":"code-line","key":"e3fff549bb8644dc8ca3e18c32550953","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ec7c193ac0d34c8cbcd79a5cc093b762","ranges":[{"kind":"range","marks":[],"text":"      cipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv);"}]}]},{"kind":"block","type":"code-line","key":"4d6338ac662b492a8531bd5eadb93c33","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"2280d70ffdb54541b30c77a6cc0176a6","ranges":[{"kind":"range","marks":[],"text":"    }"}]}]},{"kind":"block","type":"code-line","key":"55d4e629c94a438799270f5b0996723a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"547c38020b6d451d9d2384ecc5e4b972","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"56e61760c5f343cab2b73daef96e372a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"08e1f2e552ec40c7b83416acfa932cfa","ranges":[{"kind":"range","marks":[],"text":"    if (jsonObj.s) {"}]}]},{"kind":"block","type":"code-line","key":"b8fd5c4ed6504ade8c7a91cd15a84ad3","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5463d5a257c647a18298dfbbd2923d38","ranges":[{"kind":"range","marks":[],"text":"      cipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s);"}]}]},{"kind":"block","type":"code-line","key":"79f2343af2d2484793cf4e91495f59e2","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1e6969b0169242d38dedcaf51efeee7b","ranges":[{"kind":"range","marks":[],"text":"    }"}]}]},{"kind":"block","type":"code-line","key":"77d6c5ae88aa4a518d133bf7bdc3162c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"088996e457c04560aad5387e5686bf45","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"2aeb13881e7944beb61c628997cf6e39","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4b53b1c3318a45759af255d343850224","ranges":[{"kind":"range","marks":[],"text":"    return cipherParams;"}]}]},{"kind":"block","type":"code-line","key":"1bf95ca942254d32b4e13bbe3a164d21","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bf4ca53876774cbf9d28887eb052bf9f","ranges":[{"kind":"range","marks":[],"text":"  }"}]}]},{"kind":"block","type":"code-line","key":"3fa57f1997814891bf8f3be55ee877cd","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"0939d79e435242139a12e678e19a0504","ranges":[{"kind":"range","marks":[],"text":"};"}]}]},{"kind":"block","type":"code-line","key":"8b86f879b4da45d8a87992720f130ad2","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fd06b46463c54ee7a574cab54be9aa19","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"d7b0f811b1264ea18e4e2bf63ef25465","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"881c37c1bbb34a489f32b4e3c8c6e29b","ranges":[{"kind":"range","marks":[],"text":"var encrypted = CryptoJS.AES.encrypt(\"Message\", \"Secret Passphrase\", {"}]}]},{"kind":"block","type":"code-line","key":"58fe9deaf0954d86bb9b68f04e1282d6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"0ec887db589d4a248f208d3b82119c48","ranges":[{"kind":"range","marks":[],"text":"  format: JsonFormatter"}]}]},{"kind":"block","type":"code-line","key":"e073b0a178434c469d046057a8db1880","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b791716af90942d5961e9bef9e18e016","ranges":[{"kind":"range","marks":[],"text":"});"}]}]},{"kind":"block","type":"code-line","key":"e3afefad17c04e5c9e9ffa6f07cd6246","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f4b318da46e94656a0f1ef3a329e3a8c","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"4881a956751c4c4cb4f10f720cd1bdc0","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b318869f427a43ad87562990e478fc53","ranges":[{"kind":"range","marks":[],"text":"encrypted"}]}]},{"kind":"block","type":"code-line","key":"a784b4cd49f2479987554397b721fe52","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7f23d7ba6d694030a069bea75c2b1330","ranges":[{"kind":"range","marks":[],"text":"\u003e {"}]}]},{"kind":"block","type":"code-line","key":"40a9a84fdd4a4aa58315ee3e803c2351","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d4f583a9cb4d466e98e87a93cc8b84a9","ranges":[{"kind":"range","marks":[],"text":"    ct: \"tZ4MsEnfbcDOwqau68aOrQ==\","}]}]},{"kind":"block","type":"code-line","key":"5eaea33762154a648b34687215279fe9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ee0e70ee19ea4d8f9e6890ba3627b97a","ranges":[{"kind":"range","marks":[],"text":"    iv: \"8a8c8fd8fe33743d3638737ea4a00698\","}]}]},{"kind":"block","type":"code-line","key":"1a8f1c3516d74e9c88a600958d103b13","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e1f8ace8535848c1b041cbd4df36c9f8","ranges":[{"kind":"range","marks":[],"text":"    s: \"ba06373c8f57179c\""}]}]},{"kind":"block","type":"code-line","key":"1d6c04b3a80a4acfa6b0d9d9bdd17116","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"42877c2a96044d74bdd6e02777bd0011","ranges":[{"kind":"range","marks":[],"text":"  };"}]}]},{"kind":"block","type":"code-line","key":"25db9acf80a04d4fa2c598670ac41156","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f58cce55dd5b49e0878e82914d637d2f","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"5f56794123454b1e898e8bc72b5fe92b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1742dc2419f84f48be92510b9d64c26a","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.AES.decrypt(encrypted, \"Secret Passphrase\", {"}]}]},{"kind":"block","type":"code-line","key":"66b7f8b9dfc24cafa53ca8247445cb67","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e32b187dfaf940b0af3c793e912eb4ba","ranges":[{"kind":"range","marks":[],"text":"  format: JsonFormatter"}]}]},{"kind":"block","type":"code-line","key":"cb99a3e0de1e4bba8363ee5bf730100b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"2f0164e10263477cb07fac8a3139b701","ranges":[{"kind":"range","marks":[],"text":"});"}]}]},{"kind":"block","type":"code-line","key":"6db323b4a69240acbf8fcb451ab652ae","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"41afe43551f24a6ba8da7e1081fcc62e","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"3a33687546a74bcda1cc237f2d5bcc20","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8ab52e22a0c3436b8f29e69f19f51321","ranges":[{"kind":"range","marks":[],"text":"decrypted.toString(CryptoJS.enc.Utf8)"}]}]},{"kind":"block","type":"code-line","key":"e031ee945fc7465da1c7db9affa599f6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f90c62bd1b844e23bb5c9df80022b945","ranges":[{"kind":"range","marks":[],"text":"\u003e \"Message\";"}]}]}]},{"kind":"block","type":"heading-3","key":"44f51d17a1b34a65b71f41ff4bbe6840","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"60ecc7ae0d014a73892df11af9fe293d","ranges":[{"kind":"range","marks":[],"text":"Progressive Ciphering"}]}]},{"kind":"block","type":"code","key":"8b59bfe0917f418e835c40a62688a10b","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"723aa269d4ee434a87fe7e70e0b1a63b","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"dd8c65945c5148f6a60a1a6ba08f279e","ranges":[{"kind":"range","marks":[],"text":"var key = CryptoJS.enc.Hex.parse(\"000102030405060708090a0b0c0d0e0f\");"}]}]},{"kind":"block","type":"code-line","key":"9ee5f545d2d143958e2f1a5f4e963e91","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"c73e4f843ef345a5aaf116503fc993cd","ranges":[{"kind":"range","marks":[],"text":"var iv = CryptoJS.enc.Hex.parse(\"101112131415161718191a1b1c1d1e1f\");"}]}]},{"kind":"block","type":"code-line","key":"c7e68742e6c04d448f24e6704b3442e4","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"40b944f3f085437892d366336a9e0ebe","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"dad74715f7c94a898b48d4cba62abd8c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"45f3048c099b45e69bae08013f03ee9a","ranges":[{"kind":"range","marks":[],"text":"// encrypt"}]}]},{"kind":"block","type":"code-line","key":"154790dd7d474d88a9613a5b65255ce4","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"6a60bdbf2412432192d9cc5333302013","ranges":[{"kind":"range","marks":[],"text":"var aesEncryptor = CryptoJS.algo.AES.createEncryptor(key, { iv: iv });"}]}]},{"kind":"block","type":"code-line","key":"522da6ec47e34c00813a247c64bcd038","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"d830a1ed19eb4320a9e4dd0afdacb3f8","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"68ac220cc5c54088a45538cc53209698","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"cde83bc7998249399fb5783b019ebfb7","ranges":[{"kind":"range","marks":[],"text":"var ciphertextPart1 = aesEncryptor.process(\"Message Part 1\");"}]}]},{"kind":"block","type":"code-line","key":"661d92078ae24a12b72c7ef44e7e217a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a2b90d1c146640bb8758ad5c15522d03","ranges":[{"kind":"range","marks":[],"text":"var ciphertextPart2 = aesEncryptor.process(\"Message Part 2\");"}]}]},{"kind":"block","type":"code-line","key":"03a0fa9c0359481e8267f6573630cd82","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"581069e18fe84710ac941dc9dba16004","ranges":[{"kind":"range","marks":[],"text":"var ciphertextPart3 = aesEncryptor.process(\"Message Part 3\");"}]}]},{"kind":"block","type":"code-line","key":"60c9759e0fee42428896c9e9ce1215ab","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"32949d89a3d2411a99f1d3b4f2005a6f","ranges":[{"kind":"range","marks":[],"text":"var ciphertextPart4 = aesEncryptor.finalize();"}]}]},{"kind":"block","type":"code-line","key":"091151b91ab14c4abb7c5e8381573670","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"3d184fb54a964beda82de5ccd1c3c3b6","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"1397485b302548209cc2f08cd1601c54","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"fb49558452e94eda8bd303e177791b6b","ranges":[{"kind":"range","marks":[],"text":"// decrypt"}]}]},{"kind":"block","type":"code-line","key":"e6824306424a493c9fe160dab9323a9a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"1e0c31caa40f404c83dd042db9ca72d4","ranges":[{"kind":"range","marks":[],"text":"var aesDecryptor = CryptoJS.algo.AES.createDecryptor(key, { iv: iv });"}]}]},{"kind":"block","type":"code-line","key":"ff284c1a0ee440ff86b4dd8c4aec9627","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"01b2150bd78941eab6281c9548fd8d76","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"3452c07e717047419bac2a53e2bdbb2c","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"e8092ece500848a283e1181691c82a1a","ranges":[{"kind":"range","marks":[],"text":"var plaintextPart1 = aesDecryptor.process(ciphertextPart1);"}]}]},{"kind":"block","type":"code-line","key":"18838b4f72944811b545795cc0dff07a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"9eee2d741f7844e39fe856b645bb3cd3","ranges":[{"kind":"range","marks":[],"text":"var plaintextPart2 = aesDecryptor.process(ciphertextPart2);"}]}]},{"kind":"block","type":"code-line","key":"f948e391f0f14ac0b88917248c16329e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"76737148a6d14d5bbd2e7033be125d71","ranges":[{"kind":"range","marks":[],"text":"var plaintextPart3 = aesDecryptor.process(ciphertextPart3);"}]}]},{"kind":"block","type":"code-line","key":"0c9e6f925403443c82893df4ce1b64ce","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"30476f8b0f724ed1a212ddd409d17399","ranges":[{"kind":"range","marks":[],"text":"var plaintextPart4 = aesDecryptor.process(ciphertextPart4);"}]}]},{"kind":"block","type":"code-line","key":"470c30a2f7c742299ac9f5d23b2d12d6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"194aff265e934342b2f923a6324a5e95","ranges":[{"kind":"range","marks":[],"text":"var plaintextPart5 = aesDecryptor.finalize();"}]}]}]},{"kind":"block","type":"heading-3","key":"193842d6a3034e9a9a085e5cc7b06411","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b6479cc58a3e4343b92a52d0e0839778","ranges":[{"kind":"range","marks":[],"text":"Interoperability"}]}]},{"kind":"block","type":"paragraph","key":"58dd0f44dc804373905cabcbcf4a1134","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"da673cb3d36e4ff3af188e4007e50bf6","ranges":[{"kind":"range","marks":[],"text":"With OpenSSL"}]}]},{"kind":"block","type":"paragraph","key":"2f33b3e3e84f4f5d9f3c4d6d3550a2c0","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"763306d72bba483bb29d4cd441ea39c5","ranges":[{"kind":"range","marks":[],"text":"Encrypt with OpenSSL:"}]}]},{"kind":"block","type":"code","key":"2c0edbabbf5b4e1ab8f1986971a99348","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"1a1296d9ae2449a5996eab434be73826","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"496a83d9394a4ba7bfda7bc64f5e61f0","ranges":[{"kind":"range","marks":[],"text":"openssl enc -aes-256-cbc -in infile -out outfile -pass pass:\"Secret Passphrase\" -e -base64"}]}]}]},{"kind":"block","type":"paragraph","key":"9e9ead64b4cb4f76b1ce7ae8601d2533","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"dba6c79730f74519b76f2ca5cd0242d2","ranges":[{"kind":"range","marks":[],"text":"Decrypt with CryptoJS:"}]}]},{"kind":"block","type":"code","key":"fec12070b07f44ea91cd4b1fd35215b8","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"99b8b421c8454dba9e8366c53367bd5e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"37ce169cdfb34eb2b563c306bcca975d","ranges":[{"kind":"range","marks":[],"text":"var decrypted = CryptoJS.AES.decrypt(openSSLEncrypted, \"Secret Passphrase\");"}]}]}]},{"kind":"block","type":"heading-2","key":"eb674edb3e33496abc3664e5175525d6","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"a3ccf4bcb4da41029018902c79b6740b","ranges":[{"kind":"range","marks":[],"text":"Encoders"}]}]},{"kind":"block","type":"paragraph","key":"82b2dfcad61c401790c5d5126c429eff","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"9e15f09aee5949558c79f1c597f5d126","ranges":[{"kind":"range","marks":[],"text":"CryptoJS can convert from encoding formats such as Base64, Latin1 or Hex to WordArray objects and vice-versa."}]}]},{"kind":"block","type":"code","key":"531d24355a214a71b2e51c92902204b3","isVoid":false,"data":{"syntax":"javascript"},"nodes":[{"kind":"block","type":"code-line","key":"5e9631fb7e0745c286f7bf1b87c37bb1","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"00b35b7b80b84fcdab6ee9732ee648a8","ranges":[{"kind":"range","marks":[],"text":"var words = CryptoJS.enc.Base64.parse(\"SGVsbG8sIFdvcmxkIQ==\");"}]}]},{"kind":"block","type":"code-line","key":"e59c4ea8242a46ea80ec9a21b4111f43","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b8c64e3cea354e408e98e6073d75412f","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"04bc6933b3914858bda31577a34abf29","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ffd00fdf8abd45848e2b7326e65e755b","ranges":[{"kind":"range","marks":[],"text":"var base64 = CryptoJS.enc.Base64.stringify(words);"}]}]},{"kind":"block","type":"code-line","key":"37e5782ac45241319254ad1997e9484e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"0fe85c6a0a194f498abd10b09ee70cd1","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"38dada39b1a34f7ebc7ffda146997a73","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"680408ce6ab84c37945a4b6bc627f7cc","ranges":[{"kind":"range","marks":[],"text":"var words = CryptoJS.enc.Latin1.parse(\"Hello, World!\");"}]}]},{"kind":"block","type":"code-line","key":"112195a51b664cbc8f07fe517d6c0cc4","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"b88d6524d5ad46a38b84bb4afd133a2c","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"ea9c218d22ce464aaca7bc801cbd33ec","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"8c005260ba3f425f8c06568e4c027633","ranges":[{"kind":"range","marks":[],"text":"var latin1 = CryptoJS.enc.Latin1.stringify(words);"}]}]},{"kind":"block","type":"code-line","key":"85d0077f558343ea93a2cb061244bb80","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"2adebb5ba30a407f951327016cf02cf0","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"7cb30faab4c349d3a52b56c99aa85746","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"620f2fc6a48a445894963b83153112da","ranges":[{"kind":"range","marks":[],"text":"var words = CryptoJS.enc.Hex.parse(\"48656c6c6f2c20576f726c6421\");"}]}]},{"kind":"block","type":"code-line","key":"e44e400a79fe4e118f6b070be0bd7490","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bbc64cf2422c4544b7ce62e7dd473d9b","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"76403e1d8b164946a5aab6e5b3328bad","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"6ceee88ce3704280b4ca4410531f88fe","ranges":[{"kind":"range","marks":[],"text":"var hex = CryptoJS.enc.Hex.stringify(words);"}]}]},{"kind":"block","type":"code-line","key":"84445eb58f3b404ba6653f8e3badf3ed","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"46a5c1fe2fa74c9ca775c020ecf19a0d","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"da3200f650c04d8c982d70bd8e6050cf","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"bf489790dc7f4b459d3968e43ffe7941","ranges":[{"kind":"range","marks":[],"text":"var words = CryptoJS.enc.Utf8.parse(\"𔭢\");"}]}]},{"kind":"block","type":"code-line","key":"ad6d1efc7c4c41d4912eaff49a40a1b9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"48b78f10ef6f41f8b1400d2738588136","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"8d6d8c74ed7445e3b67f263e2a65897e","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"ff2b394c49874fa9afbc081e6a3bff1b","ranges":[{"kind":"range","marks":[],"text":"var utf8 = CryptoJS.enc.Utf8.stringify(words);"}]}]},{"kind":"block","type":"code-line","key":"324399d1fed6407bba357cec0cfb65fe","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"7030d947236440b0b0afc908f650fa85","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"2b7f330c8e0245f189e68ece2301eb24","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"86ed16069308449ab62258ade55cfa30","ranges":[{"kind":"range","marks":[],"text":"var words = CryptoJS.enc.Utf16.parse(\"Hello, World!\");"}]}]},{"kind":"block","type":"code-line","key":"28241f9cf9ca45b0acfe375a8472e7a8","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"01282839a41149fbb02f5694d2f0ff3a","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"93ac4f76523741f28225e97657b56f0f","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"4ed4aac32d014b85b41d8e72a2f78f8f","ranges":[{"kind":"range","marks":[],"text":"var utf16 = CryptoJS.enc.Utf16.stringify(words);"}]}]},{"kind":"block","type":"code-line","key":"8ec168d55e49411ab7ce7d4664bddbe9","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"69862e116e464a029b4ca9d8b9d93784","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"a4d01d5895b8401a98a966678a9a1b4a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"5bba4987c350436f8632be4c410be45a","ranges":[{"kind":"range","marks":[],"text":"var words = CryptoJS.enc.Utf16LE.parse(\"Hello, World!\");"}]}]},{"kind":"block","type":"code-line","key":"7fb618b6be2f4873bfa17d1f5766ca6a","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"94e0d927d7bc4687937bd60537e46a6e","ranges":[{"kind":"range","marks":[],"text":"​"}]}]},{"kind":"block","type":"code-line","key":"7300ae16c35f427ea63214f5b04fe4d7","isVoid":false,"data":{},"nodes":[{"kind":"text","key":"f6999668cf2f4df0aff9873a8a6499e9","ranges":[{"kind":"range","marks":[],"text":"var utf16 = CryptoJS.enc.Utf16LE.stringify(words);"}]}]}]}]}}}},"user":{"kind":"user","uid":"-M2n77oX7yqEhymz5WbQ","baseDomain":"","defaultSpace":null,"displayName":"","photoURL":null,"deletedAt":null,"usageStatuses":null,"email":"","emailVerified":false,"disabled":false,"phoneNumber":null,"providers":{},"isVisitor":true,"customClaims":{},"lastLoggedInAt":1584626892454,"createdAt":1584626892454}},"config":{"environment":"production","firebase":{"databaseURL":"https://gitbook-28427.firebaseio.com","apiKey":"AIzaSyBL3yy07hdwBstwhhFTkRtzJA865UQzQVg","authDomain":"app.gitbook.com","projectId":"gitbook-28427","storageBucket":"gitbook-28427.appspot.com","messagingSenderId":"208404988308"},"amplitude":{"key":"fef1e872c952688acd962d30aa545b9e","endpoint":"www.gitbook.com/__amp/"},"intercom":{"app_id":"ajrah9dt"},"zendesk":{"widget_key":"c2b4abc5-eb81-454f-8d35-ba1650332541","subdomain":"gitbook"},"ga":{"spaces":{"view_id":"152688311","id":"UA-57505611-10"},"website":{"id":"UA-57505611-9"}},"slack":{"client_id":"3085992729.251477828931","redirect_uri":"https://hooks.gitbook.com/hooks/slack/oauth"},"sentry":{"url":"https://df403e1abd7046148b272790ec350ce0@sentry.io/193897"},"stripe":{"public_key":"pk_live_iPkbPsG28bjTrkbfHXUq0cA0","plans":{"business_yearly":"plan_ERCJgSzm3Ui1ox","team_yearly":"plan_GAeDEVtig2ujYe","team_monthly":"plan_GAeDpGXRUSctoE","business_monthly":"plan_ERCJFVRMVGgjVZ","startup_yearly":"plan_FpdZWR4TLYnKYH","startup_monthly":"plan_FpdWuSK3BgOldB"},"products":{"legacy":"prod_FROhqd8l1W4Fwg","team":"prod_GAeD47cc905FaD","business":"prod_DpiRtaS8dvrtrK","startup":"prod_Cd5mCUdVDfZSHY","enterprise":"prod_DpMsO7RlzNd0Ty"}},"algolia":{"appid":"Q9UGR6532T"},"clearbit":{"public_key":"pk_e1e4d94ae5385255f0fc7d76d4897ade"},"urls":{"api":"https://api-beta.gitbook.com","spaces":"https://gitbook-28427.firebaseapp.com","website":"https://app.gitbook.com","saml":"https://www.gitbook.com"},"domains":{"spaces":"gitbook.io","cookie":".gitbook.com"},"cdn":{"blobsurl":"https://gblobscdn.gitbook.com/","hosting_cname":"hosting.gitbook.com"},"statuspage":{"domain":"http://status.gitbook.com"},"logrocket":{"key":"fvjtqz/gitbook"},"version":"6.15.2","buildVersion":"6.15.2-18216e3.29040"},"props":{"ownerID":"-LVOh1OH2-hZXChaLekq","spaceID":"-LVOh1OI8lhWfR_994H2","spaceName":"docs","basename":"/docs","location":"/docs/"}};
            </script>
            <script id="__LOADABLE_REQUIRED_CHUNKS__" type="application/json" crossorigin="anonymous" charset="utf-8">[]</script>
<script async="" data-chunk="space" src="./CryptoJS - CryptoJS_files/111.20cf3b38.js.下载" crossorigin="anonymous" charset="utf-8"></script>
        
    
    <div id="portals-root"><div></div></div></body></html>